Size: a a a

Rust — русскоговорящее сообществo

2020 September 23

RS

Roma S in Rust — русскоговорящее сообществo
Дима
где енту информацыю можно достать? здраствуйте
https://blog.cloudflare.com/this-is-strictly-a-violation-of-the-tcp-specification/ в этом блог посте было нормально
источник

RS

Roma S in Rust — русскоговорящее сообществo
(надо домотать до `What is CLOSE_WAIT anyway?`)
источник

λ

λstral in Rust — русскоговорящее сообществo
Дима
где енту информацыю можно достать? здраствуйте
источник

IG

Igor Gulamov in Rust — русскоговорящее сообществo
Есть ли вариант без кучи lifetime параметров описать такой bound на trait:

trait Num<'a>: AddAssign<Self>, AddAssign<&'a Self>...
источник

IG

Igor Gulamov in Rust — русскоговорящее сообществo
никаких хранимых поинтеров в возвращаемых объектах нет.
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Igor Gulamov
Есть ли вариант без кучи lifetime параметров описать такой bound на trait:

trait Num<'a>: AddAssign<Self>, AddAssign<&'a Self>...
Так ты только что и описал...

В чём конкретно проблема?
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
У меня ощущение что ты хочешь HRTB (: for<'a> Trait<&'a Self>), но по вопросу не понятно.
источник

IG

Igor Gulamov in Rust — русскоговорящее сообществo
В том, что в последующем коде надо явно таскать лайфтайм параметр 'a
источник

IG

Igor Gulamov in Rust — русскоговорящее сообществo
да, вроде HRTB как раз то, что надо
источник

f

folex in Rust — русскоговорящее сообществo
Что-то у меня после обновления на CLion 2020.2 отлетели Inspections... clean & reimport проекта не помог, пока надеюсь что само починится. Будьте осторожны, в общем.

UPD: инвалидация кешей + реимпорт чз Cargo.toml починил. Но уровня настройки inspections всё равно не видно
источник

f

folex in Rust — русскоговорящее сообществo
А parking_lot::RWLock предполагает возможность того что несколько потоков держат ссылку на него, и периодически пытаются что-то записать? Или для такой цели его нужно обернуть в Arc?
источник

Э

Эрик in Rust — русскоговорящее сообществo
folex
А parking_lot::RWLock предполагает возможность того что несколько потоков держат ссылку на него, и периодически пытаются что-то записать? Или для такой цели его нужно обернуть в Arc?
А какая разница? Что то ссылка, что то.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Вообще, там write-preferring rwlock, если что.
источник

f

folex in Rust — русскоговорящее сообществo
Эрик
А какая разница? Что то ссылка, что то.
Я пытаюсь что-то такое соорудить
https://gist.github.com/folex/8d37bbdc79e95e8357ea5be5e1c9ea5a
источник

f

folex in Rust — русскоговорящее сообществo
то есть у меня есть долгоживущие потоки, и им иногда надо обращаться в S с просьбой положить туда новое значение. Чтений этих значений этими потоками намного больше чем записи.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Ну бывает. А чего не так?
источник

Э

Эрик in Rust — русскоговорящее сообществo
Если у тебя каждый раз значение именно новое, а не просто маленькое изменение в данных, то можно хранить RwLock<Arc<Data>> и делать
get_data() -> Arc<Data> { LOCK.read().clone() }
чтобы долго локи не держать на чтение.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Менять через
set_data(new_data: Arc<Data>) { *LOCK.write() = new_data; }
источник

Э

Эрик in Rust — русскоговорящее сообществo
Если хочешь 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

Mikail Bagishov in Rust — русскоговорящее сообществo
folex
А parking_lot::RWLock предполагает возможность того что несколько потоков держат ссылку на него, и периодически пытаются что-то записать? Или для такой цели его нужно обернуть в Arc?
Если тебе удалось всем куда одолжить ссылки на RwLock, то это будет прекрасно работать.

А вот если не удалось, то Arc спасет.
источник