Size: a a a

2020 October 13

DN

Denis Nevmerzhitskii in Rust Beginners
Привет! Не могу понять как обойти ошибку в этом примере https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=5c69cca3dc80da8b7f8d5bc2961fb255
Решил с помощью .cloned(), но интересно, можно ли не клонировать структуру R
источник

K

Kitsu in Rust Beginners
Denis Nevmerzhitskii
Привет! Не могу понять как обойти ошибку в этом примере https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=5c69cca3dc80da8b7f8d5bc2961fb255
Решил с помощью .cloned(), но интересно, можно ли не клонировать структуру R
let w_rs: Vec<_> = rs.into_iter().filter_map(|(_, r)| if r.w { Some(r) } else { None }).collect();
источник

K

Kitsu in Rust Beginners
https://doc.rust-lang.org/std/collections/struct.HashMap.html#method.into_values
Есть вот такая штука, чтоб само мапилось, но оно в найтли
источник

DN

Denis Nevmerzhitskii in Rust Beginners
Kitsu
let w_rs: Vec<_> = rs.into_iter().filter_map(|(_, r)| if r.w { Some(r) } else { None }).collect();
Действительно. Я так понимаю, rs после этого не существует. Интересно, а сохранить rs и получить вектор ссылок на r возможно?
источник

r

red75prime in Rust Beginners
Denis Nevmerzhitskii
Действительно. Я так понимаю, rs после этого не существует. Интересно, а сохранить rs и получить вектор ссылок на r возможно?
Получить вектор ссылок можно. Передать его в заспавненную таску нельзя, так как на уровне типов нет гарантий, что она не переживёт rs.
источник

DN

Denis Nevmerzhitskii in Rust Beginners
я так понимаю проблема в том, что я муваю w_rs в асинк блок. Но из-за try_join! main не закончится раньше таски. Или я неправильно рассуждаю?
источник

K

Kitsu in Rust Beginners
Все правильно, только tokio::spawn требует 'static, а не какой-то параметризованный лайфтайм для футуры
источник

АГ

Алексей Герасимов... in Rust Beginners
был же вроде вариант с scoped task, типа scoped thread, или я путаю чего
источник

K

Kitsu in Rust Beginners
scoped thread есть только в кросбиме, а scoped task не завезли
источник

JC

Julian =) Coffee in Rust Beginners
Denis Nevmerzhitskii
я так понимаю проблема в том, что я муваю w_rs в асинк блок. Но из-за try_join! main не закончится раньше таски. Или я неправильно рассуждаю?
ну да, но бороу-чекер не может это понять
источник

K

Kitsu in Rust Beginners
Kitsu
scoped thread есть только в кросбиме, а scoped task не завезли
Последний ишуй по scoped tasks:
https://github.com/tokio-rs/tokio/issues/2596
источник

r

red75prime in Rust Beginners
Julian =) Coffee
ну да, но бороу-чекер не может это понять
Borrow-checker может это понять, если ему сказать. Но в токио сделали требование 'static
источник

DL

Danil Lugovskoy in Rust Beginners
эх. когда уже structured concurrency завезут.. очень конечно не хватает..
пока только вроде котлин осилил...
источник

JC

Julian =) Coffee in Rust Beginners
red75prime
Borrow-checker может это понять, если ему сказать. Но в токио сделали требование 'static
Хм, а как ему сказать?
источник

K

Kitsu in Rust Beginners
Julian =) Coffee
Хм, а как ему сказать?
источник

JC

Julian =) Coffee in Rust Beginners
оу
источник

DN

Denis Nevmerzhitskii in Rust Beginners
ясно, спасибо
источник

DN

Denis Nevmerzhitskii in Rust Beginners
то есть если мне rs не нужен, то можно использовать into_iter. Если нужен, то клонировать. Так?
источник

АГ

Алексей Герасимов... in Rust Beginners
Denis Nevmerzhitskii
то есть если мне rs не нужен, то можно использовать into_iter. Если нужен, то клонировать. Так?
да, into_iter извлекает значения из структуры, разрушая ее
источник

MB

Mikail Bagishov in Rust Beginners
Odim
Вопрос про указатели. Почему NonNull нельзя разыменовать без .as_ptr()?
Оператор ражыменования для NonNull был бы ансейфным, а такое не поддерживается.
источник