Size: a a a

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

2020 April 19

Э

Эрик in Rust — русскоговорящее сообществo
Чтобы не ломать option. Я вообще не понимаю, почему ты его не можешь просто разобрать в строку и потом скопировать, если там есть какая-то строка.
И да, ты учитывай, что если у тебя внутри Option<> ничего нет, то unwrap выдаст панику и сломает твоё приложение.
источник

D

Denis in Rust — русскоговорящее сообществo
Эрик
let a: &Option<String> = &your_option;
let cloned_string: String = match a {
 Some(s) => s.clone(),
 None => String::new(),
}
ну вот конкретно это заменяется на your_option.clone().unwrap_or_default()
источник

e

egoarka in Rust — русскоговорящее сообществo
Tema
почему так сложно, а не clone().unwrap().to_string() ?
a.map_or("".to_string(), |v| v.clone())


upd. сори профиксил, v.clone*
источник

Y

Yuriy in Rust — русскоговорящее сообществo
если в файл потенциально будет писаться (и читаться) инфа из разных тредов, то нужно ли его оборачивать в RwLock?
источник

r

red75prime in Rust — русскоговорящее сообществo
A V
red75prime а как привязать срок жизни выдаваемого &mut к итератору?
Он сам привяжется. Время жизни возвращаемой ссылки в сигнатуре функции указано
источник

Э

Эрик in Rust — русскоговорящее сообществo
Yuriy
если в файл потенциально будет писаться (и читаться) инфа из разных тредов, то нужно ли его оборачивать в RwLock?
Лучше обернуть.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Системный вызов может использовать мутекс к файлу внутри, а может и нет.
источник

Y

Yuriy in Rust — русскоговорящее сообществo
спасибо!
источник

AV

A V in Rust — русскоговорящее сообществo
red75prime
Он сам привяжется. Время жизни возвращаемой ссылки в сигнатуре функции указано
impl<'a, K: EnrKey> Iterator for NodeEntries<'a, K> {
   type Item = &'a mut NodeEntry<K>;

   ….
}

let link = table.closest().next().unwrap();
let link2 = table.closest().next().unwrap();


прекрасно собирается хотя имеем явное UB
источник

r

red75prime in Rust — русскоговорящее сообществo
A V
impl<'a, K: EnrKey> Iterator for NodeEntries<'a, K> {
   type Item = &'a mut NodeEntry<K>;

   ….
}

let link = table.closest().next().unwrap();
let link2 = table.closest().next().unwrap();


прекрасно собирается хотя имеем явное UB
NLL, по-моему, работает. Время жизни link считается до последнего использования. А использования нет. Что будет если попробовать использовать link после создания link2?
источник

AV

A V in Rust — русскоговорящее сообществo
да, похоже
источник

AV

A V in Rust — русскоговорящее сообществo
у него получается привязать выдаваемую ссылку к итератору
источник

r

red75prime in Rust — русскоговорящее сообществo
A V
у него получается привязать выдаваемую ссылку к итератору
В MIRI ещё неплохо бы выполнить цикл с изменением элементов
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Эрик
Вообще, не люблю паниковать. Паниковать надо тогда, когда вообще ничего нельзя сделать.
Ну на этапе разработки бывает лень писать нормально обработку ошибок до поры до времени
источник
2020 April 20

D

Denis in Rust — русскоговорящее сообществo
Yuriy
если в файл потенциально будет писаться (и читаться) инфа из разных тредов, то нужно ли его оборачивать в RwLock?
это не поможет, к сожалению
источник

D

Denis in Rust — русскоговорящее сообществo
то, что у тебя вызов write завершился, ещё не значит, что данные сброшены на диск
источник

Y

Yuriy in Rust — русскоговорящее сообществo
а если flush вызывать?
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
Yuriy
а если flush вызывать?
Если пошерить через RwLock один и тот же File, то будет использоваться один буфер и flush не нужен будет
источник

D

Denis in Rust — русскоговорящее сообществo
Yuriy
а если flush вызывать?
всё равно
источник

D

Denis in Rust — русскоговорящее сообществo
гарантий 0
источник