bar: Arc<Mutex<Bar>>,
}
есть, например, фунция где внутри я клонирую Foo дальше в функию в которой изменяю поле bar. Получу ли я эти изменения после этой функции ниже??
fn something(foo: Foo) {
change_bar(foo.clone());
// Это изменённый bar после change_bar(..)?
let bar = foo.lock().unwrap();
}
Так напиши и проверь
Но вообше скорее всего да, получишь тк при клонировании структуры просто вызывается clone на каждое поле
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=9d408605c142c56999d12a0d6eadc770
Это зависит от того, спавнятся ли там внутри треды. Если спавнятся и не джойнятся, то у тебя будет гонка из-за go-statement, и там может быть изменённый bar, а может быть старый. Если у тебя go-statement нет внутри change_bar, то изменённый.
Кхм. У нас Rust, а не Go
change_bar async и делаю await.
Там внутри есть незаавейченый tokio::spawn,?
явно нет
Обсуждают сегодня