Size: a a a

2021 March 10

А

Алексей in rust_offtopic
именно там где ансейф и сырые указатели
источник

AN

Alex Noname in rust_offtopic
Если было бы все так просто не было бы тикетов на гитхабе
источник

А

Алексей in rust_offtopic
так тикеты на гитхабе касаются багов в сейфе
источник

AN

Alex Noname in rust_offtopic
А откуда они берутся?
источник

AN

Alex Noname in rust_offtopic
Баги с памятью в сейфе...
источник

H

Hirrolot in rust_offtopic
Alex Noname
А откуда они берутся?
из-за фундаментальных косяков языка например
источник

AN

Alex Noname in rust_offtopic
Hirrolot
из-за фундаментальных косяков языка например
Модель этого бороу чекера довольна проста. И помогает в большом числе прикладного кода. Но иногда надо на нее натянуть модель внутри которая ансейф. И получается сова на глобус. С точки зрения этого резерча раст интересен. Я с тобой согласен.
источник

А

Алексей in rust_offtopic
так на ансейф же она и не натягивается толком, на то он и ансейф
источник

А

Алексей in rust_offtopic
где у тебя полная свобода и ты можешь делать с указателями что угодно прямо как в старой доброй сишке
источник

D

Dima in rust_offtopic
Алексей
где у тебя полная свобода и ты можешь делать с указателями что угодно прямо как в старой доброй сишке
так то оно так, но вот взаимодействие *ptr и &/&mut оно очень не тривиальное
источник

AN

Alex Noname in rust_offtopic
Простой пример. Вот вектор мы можем использовать просто, хоть внутри там и ансейф чуть чуть для маллок. С хэшмапой уже сложнее, там всякие ентрай апи появляются. Бинарные дерьевя уже хуже, но там была интересная закладка у меня, надо разобраться. Графы уже требуют некой арен. Связные списки вообще никак. Ещё есть сайд эффекты в деструкторах и прочие приколы.
источник

А

Алексей in rust_offtopic
Dima
так то оно так, но вот взаимодействие *ptr и &/&mut оно очень не тривиальное
ну да, надо самому следить
источник

А

Алексей in rust_offtopic
Alex Noname
Простой пример. Вот вектор мы можем использовать просто, хоть внутри там и ансейф чуть чуть для маллок. С хэшмапой уже сложнее, там всякие ентрай апи появляются. Бинарные дерьевя уже хуже, но там была интересная закладка у меня, надо разобраться. Графы уже требуют некой арен. Связные списки вообще никак. Ещё есть сайд эффекты в деструкторах и прочие приколы.
да, плата за ограничения раста
источник

А

Алексей in rust_offtopic
Alex Noname
Простой пример. Вот вектор мы можем использовать просто, хоть внутри там и ансейф чуть чуть для маллок. С хэшмапой уже сложнее, там всякие ентрай апи появляются. Бинарные дерьевя уже хуже, но там была интересная закладка у меня, надо разобраться. Графы уже требуют некой арен. Связные списки вообще никак. Ещё есть сайд эффекты в деструкторах и прочие приколы.
а чтобы без особых болей с графами работать так вообще гц нужен по хорошему
источник

D

Dima in rust_offtopic
Алексей
ну да, надо самому следить
ну вот следить очень сложно, например
fn main() {
   let mut x = 0;
   let mut_ptr = &mut x as * mut _;
   
   // ub, according to miri
   /*
   unsafe {
       let mut_ref = &mut x;
       *mut_ref = 2;
       *mut_ptr;
   }*/
   
   unsafe {
       let mut_ref = &mut *mut_ptr;
       *mut_ref = 2;
       *mut_ptr;
   }
}

например почему в одном случае ub, а вдругом нет, cможешь сходу сказать?  хотя  2 блока делают примерно тоже самое
источник

А

Алексей in rust_offtopic
по моему тут в обоих случаях ub, просто второй случай обманывает компилятор который не может уже отследить откуда взялся mut_ptr
источник

AN

Alex Noname in rust_offtopic
Уб же вообще нету. У нас одна переменная на всю программу
источник

А

Алексей in rust_offtopic
я вот не уверен кстати, есть ли ub тут на самом деле
источник

D

Dima in rust_offtopic
Алексей
я вот не уверен кстати, есть ли ub тут на самом деле
ну запусти на playground
источник

AN

Alex Noname in rust_offtopic
Ну тут алиасинг.
источник