Size: a a a

2021 February 22

EG

Emmanuel Goldstein in rust_offtopic
Я просто вынес достаточно много кода в функцию, чтобы App не попадал на границу
источник

EG

Emmanuel Goldstein in rust_offtopic
Заменил create_app(...) на run(..., bind: impl ToSocketAddrs)
источник

p

polunin.ai in rust_offtopic
но анонимные типы в публичных и нтерфейсах - это пиздец тупая хуйня, согласен
источник

JM

John Meow in rust_offtopic
Emmanuel Goldstein
Это, кстати, ещё вопрос того, что Rust требует полных аннотаций типа для функции при том, что в нём существует понятие «тип, который нельзя записать»
А если просто передавать тип аргументом?
источник

p

polunin.ai in rust_offtopic
зачем так делать
источник

EG

Emmanuel Goldstein in rust_offtopic
John Meow
А если просто передавать тип аргументом?
Тогда я не смогу вызвать функцию ::new(), которая привязана к типу App<AppState, ...>, где AppState — приватный.
источник

p

polunin.ai in rust_offtopic
John Meow
А если просто передавать тип аргументом?
тип аргументом - это типы-как-выражения а это почти завтипы
источник

EG

Emmanuel Goldstein in rust_offtopic
Я вообще не понимаю, почему Rust не считает это за протекание приватного типа в публичное API
источник

JM

John Meow in rust_offtopic
John Meow
А если просто передавать тип аргументом?
fn something<..., T>(...) -> App<T, …> { ... }
источник

p

polunin.ai in rust_offtopic
John Meow
fn something<..., T>(...) -> App<T, …> { ... }
ты не можешь написать T ты это понимаешь7
источник

EG

Emmanuel Goldstein in rust_offtopic
John Meow
fn something<..., T>(...) -> App<T, …> { ... }
::new() реализовано не для App<T, ...>, а для App<AppState, ...>
источник

EG

Emmanuel Goldstein in rust_offtopic
Если так сделать, я не смогу вызвать ::new() в теле функции
источник

JM

John Meow in rust_offtopic
Кошмар
источник

KR

Kai Ren in rust_offtopic
Emmanuel Goldstein
Я вообще не понимаю, почему Rust не считает это за протекание приватного типа в публичное API
Потому что Раст опирается на pub для определения этого. Там тип pub и есть, но так как он unreachable pub, назвать ты его не можешь.
источник

KR

Kai Ren in rust_offtopic
Так то есть линт rustc unreachable_pub
источник

KR

Kai Ren in rust_offtopic
И его можно `deny`ить. Но никто как правило rustc'шные линты не харденит.
источник

EG

Emmanuel Goldstein in rust_offtopic
Kai Ren
И его можно `deny`ить. Но никто как правило rustc'шные линты не харденит.
Я всегда копипащу полотно дополнительных линтов, лол
источник

EG

Emmanuel Goldstein in rust_offtopic
По умолчанию rustc очень мягкий
источник

KR

Kai Ren in rust_offtopic
Emmanuel Goldstein
Я всегда копипащу полотно дополнительных линтов, лол
Я тоже 🤝
источник

EG

Emmanuel Goldstein in rust_offtopic
Жаль, что нет никакого разумного -Wall
источник