RS
Size: a a a
RS
RS
λ
IG
IG
в🧇
в🧇
HRTB (: for<'a> Trait<&'a Self>), но по вопросу не понятно.IG
IG
f
f
parking_lot::RWLock предполагает возможность того что несколько потоков держат ссылку на него, и периодически пытаются что-то записать? Или для такой цели его нужно обернуть в Arc?Э
parking_lot::RWLock предполагает возможность того что несколько потоков держат ссылку на него, и периодически пытаются что-то записать? Или для такой цели его нужно обернуть в Arc?Э
f

f
Э
Э
RwLock<Arc<Data>> и делатьget_data() -> Arc<Data> { LOCK.read().clone() }
чтобы долго локи не держать на чтение.Э
set_data(new_data: Arc<Data>) { *LOCK.write() = new_data; }Э
static, то можно сделатьstatic LOCK: RwLock<Option<Arc<Data>>> = RwLock::const_new(RawRwLock::INIT, None);
fn set_data(new: Arc<Data>) { LOCK.write().replace(new); }
fn get_data() -> Arc<Data> { LOCK.read().unwrap().clone() }
MB
parking_lot::RWLock предполагает возможность того что несколько потоков держат ссылку на него, и периодически пытаются что-то записать? Или для такой цели его нужно обернуть в Arc?