Кто-нибудь пробовал уже Rust 2018?
Как вам, что понравилось/не понравилось?
Я хотел с Земеротом попробовать, но руками задолбался править пути в импортах, а автоматический rustfix не завелся почему-то. Отложил.
UPD: Из нравящегося, например рад такой мелочи как импорт макросов через use. Глядишь так макросы потихоньку и станут более органичной частью языка.
В rss прилетело
там между делом говорится что cargo fix
надо запускать в определенной последовательности, комитя промежуточные результаты.
Сделал как говорят, вроде cargo fix завелся. Закомитил все это дело в отдельную ветку: https://github.com/ozkriff/zemeroth/commits/rust2018
В общем-то, cargo fix к локальным импортам crate приписал и все. В этом пока весь переход и заключается - теперь это rust2018-код, использующий кучу rust2015 зависимостей.
После дописывания #![warn(rust_2018_idioms)]
появился еще миллион предупреждений вида
warning: unreachable `pub` item
--> src/screen/mod.rs:65:5
|
65 | pub fn resize(&mut self, aspect_ratio: f32) {
| ---^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| |
| help: consider restricting its visibility: `crate`
которые cargo fix править не хочет - видимо, руками надо.
В мастер пока все это комитить не буду (на stable перстанет собираться тогда), просто поигрался.
Частично перешёл в своём проекте.
cargo fix
поправил пути импортов, но во второй проход вносить изменения отказался, ссылаясь на то, что проект не компилится.
Попробовал поменять все pub
на crate
: find src -name '*.rs' -exec sed -i 's/pub/crate/g' "{}" \;
Попытка провалилась. Выяснилось, что в quick-error!
ожидается либо enum
, либо pub enum
и никаких crate enum
принимать не хочет.
Временный фикс: find src -name '*.rs' -exec sed -i 's/crate enum Error/pub enum Error/g' "{}" \;
Пока не решил, нужно ли с него переходить.
Все лайфтаймы пришлось исправлять вручную…
Пока не разобрался с импортом макросов через use
, писать для slog
в каждом файле по пачке use
выглядит не круто, а как заюзать для всего проекта не понятно.
cargo fix
это хорошо, но это лишь про пути.
А кто-нибудь разбирался что поменяется в редакции в целом, как теперь идиоматично писать код, и всё такое?
Как я понял по задумке он должен править всё в 2 прохода, но у меня не получилось из-за quick-error!
.