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