Comments 2
Большое спасибо за статью! Очень здорово, что по Rust они появляются и на русском.
Пара замечаний. Во-первых, идиоматично переиспользовать имена переменных в паттернах наподобие того, что демонстрирует ваш код:
Т.е. не нужно добавлять суффиксов-префиксов, можно просто переопределить (в смысле rebind, а не reassign) существующую переменную.
Во-вторых,
Обычно
Пара замечаний. Во-первых, идиоматично переиспользовать имена переменных в паттернах наподобие того, что демонстрирует ваш код:
let sdb = Arc::new(Mutex::new(db));
{
let sdb = sdb.clone();
thread::spawn(move || do_something(sdb));
}
Т.е. не нужно добавлять суффиксов-префиксов, можно просто переопределить (в смысле rebind, а не reassign) существующую переменную.
Во-вторых,
where
— это не «задание краткого имени для длинного типа», это определение ограничений на дженериковую ти́повую переменную: fn do_something<T: 'a + Trait1 + Trait2 + Trait3>() { ... }
// equivalent to
fn do_something<T>() where T: 'a + Trait1 + Trait2 + Trait3 { ... }
Обычно
where
используется, если ограничений много или если они большие (например, большая сигнатура замыкания), потому что в таком случае их проще будет распределить по нескольким строчкам. Если ограничения простые (один-два коротких трейта), то чаще используется синтаксис с ограничениями в списке параметров.Пара замечаний. Во-первых, идиоматично переиспользовать имена переменных в паттернах наподобие того, что демонстрирует ваш код:
Я знаю про эту практику, но мне она не нравится. Маскировать переменные можно и в Си, однако обычно я этого избегаю, т.к. это вносит путаницу и обычно сигнализирует о чрезмерной вложенности или непродуманности имён.
Во-вторых, where — это не «задание краткого имени для длинного типа», это определение ограничений на дженериковую ти́повую переменную:
Разумеется. Спасибо. Подумал про одно, написал про другое.
Sign up to leave a comment.
Создаём REST-сервис на Rust. Часть 4: переходим к REST API