Size: a a a

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

2020 October 22

AL

Andrey @ozkriff Lesn... in Rust — русскоговорящее сообществo
любишь nightly, люби и ice
источник

ИЛ

Иван Лещенко... in Rust — русскоговорящее сообществo
Константинтий
Неизвестную ошибку компилятора словил
источник

ИЛ

Иван Лещенко... in Rust — русскоговорящее сообществo
Попробуй обновится до 1.49.0-nightly
источник

К

Константинтий... in Rust — русскоговорящее сообществo
Никогда такого не было, и вот опять
источник

К

Константинтий... in Rust — русскоговорящее сообществo
Спасибо, попробую
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Andrey @ozkriff Lesnikóv
любишь nightly, люби и ice
Любишь Раст, люби и ice
источник

p

polunin.ai in Rust — русскоговорящее сообществo
у меня есть &mut T и я хочу сделать нечто вроде
let mut temp;
let mut val = T::new();
swap(&mut temp, &mut val);
то есть свапнуть готовую переменную в неинициализированную память. так можно сделать?
источник

К

Константинтий... in Rust — русскоговорящее сообществo
Иван Лещенко
Попробуй обновится до 1.49.0-nightly
О, помогло. Спасибо, вы лучшие!
источник

K

Kitsu in Rust — русскоговорящее сообществo
polunin.ai
у меня есть &mut T и я хочу сделать нечто вроде
let mut temp;
let mut val = T::new();
swap(&mut temp, &mut val);
то есть свапнуть готовую переменную в неинициализированную память. так можно сделать?
MaybeUninit + ptr::copy_nonoverlapping?
источник

K

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

p

polunin.ai in Rust — русскоговорящее сообществo
ну я уже понял что я так сделать не смогу потому что по типам не сойдется потом дальше
источник

AL

Andrey @ozkriff Lesn... in Rust — русскоговорящее сообществo
polunin.ai
Любишь Раст, люби и ice
ну не, на стабильных-то версиях ice словить на порядки менее вероятно уже, особенно если не заниматься сильными колдунствами
источник

r

red75prime in Rust — русскоговорящее сообществo
Я первый раз за два года панику в cargo словил вчера. Ищу MRE
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Andrey @ozkriff Lesnikóv
ну не, на стабильных-то версиях ice словить на порядки менее вероятно уже, особенно если не заниматься сильными колдунствами
на стабильной версии невозможно писать
источник

r

red75prime in Rust — русскоговорящее сообществo
red75prime
Я первый раз за два года панику в cargo словил вчера. Ищу MRE
Нашёл. Что-то недоделано в -Z build-std похоже. Пустой бинарный крейт с единственной зависимостью packed_struct_codegen = 0.3

cargo build -p packed_struct_codegen -Z build-std --target
<не важен>

падает с

thread 'main' panicked at 'no entry found for key', src\tools\cargo\src/cargo\core\compiler\context\compilation_files.rs:319:9
источник

AL

Andrey @ozkriff Lesn... in Rust — русскоговорящее сообществo
polunin.ai
на стабильной версии невозможно писать
Смотря что и какие потребности. Большинству людей ночник не нужен
источник

r

red75prime in Rust — русскоговорящее сообществo
Согласен. У меня ночник только из-за кросс-компиляции на неподдерживаемую платформу.
источник

M

Mnwa in Rust — русскоговорящее сообществo
Привет! Кто-нибудь разбирается в моделях памяти Rust?
Я тут через loom нашел интересное поведение на атомиках с SeqCst ордерингом
источник

M

Mnwa in Rust — русскоговорящее сообществo
use loom::thread;
use loom::sync::atomic::{AtomicUsize, Ordering};
use loom::sync::Arc;

fn main() {
   loom::model(|| {
       let x = Arc::new(AtomicUsize::new(0));
       let y = Arc::new(AtomicUsize::new(0));
       let x1 = x.clone();
       let y1 = y.clone();
       let x2 = x.clone();
       let y2 = y.clone();
       let child_x = thread::spawn(move || {
           x1.store(1, Ordering::SeqCst);
           y1.load(Ordering::SeqCst)
       });
       let child_y = thread::spawn(move || {
           y2.store(1, Ordering::SeqCst);
           x2.load(Ordering::SeqCst)
       });
       let res_x = child_x.join().unwrap();
       let res_y = child_y.join().unwrap();
       assert!(res_x != 0 && res_y != 0);
   })
}

Есть два треда, один пишет в x единицу и читает y, второй пишет в y единицу и читает из x
источник

M

Mnwa in Rust — русскоговорящее сообществo
В общем, в loom проскакивает ситуация, когда x и y равны 0 одновременно и этот assert паникует
источник