The Core of Rust
Rust — это язык с жёсткой внутренней связностью.
Он не сложен из-за плохой документации, а потому что его концепты переплетены: замыкания, трейты, заимствование, Send
/Sync
, итераторы и прочие вещи нужны сразу. Поняв их, вы получаете мощный и последовательный инструмент.
Мини-пример.
20 строк кода на Rust, отслеживающие изменения файлов:
use notify::{Watcher, RecursiveMode};
fn main() -> Result<(), notify::Error> {
let mut w = notify::recommended_watcher(|r| {
if let Ok(e) = r {
println!("{:?} {:?}", e.kind, e.paths);
}
})?;
["pages", "templates", "static"].iter()
.try_for_each(|p| w.watch(p.into(), RecursiveMode::Recursive))?;
loop { std::thread::park(); }
}
Даже здесь нужно знать: Result
, замыкания, итераторы, трейты Display
, 'static
, Send
.
На JavaScript то же заняло бы 5 строк и не потребовало бы ни трейтов, ни заимствований.
Вывод.
Внутри Rust прячется «меньший, чище» язык с ясным видением: безопасность без сборщика мусора, абстракции без потерь, композиция через трейты. Этот язык появляется, когда все части складываются в единую картину.