Size: a a a

2021 April 17

AN

Alex Noname in rust_offtopic
Ответ путешественника мне кажется более сложный вопрос ставит
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
нет никакой паники
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
просто юзай Fin
источник

EG

Emmanuel Goldstein in rust_offtopic
Ну включи const_evaluatable_checked и получится
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
impl<T, const LENGTH: Fin<usize::MAV_VALUE>> Vector<T, LENGTH> {
   // The { LENGTH + 1 } isn't allowed yet in this context.
   fn push(self) -> Vector<T, { LENGTH + 1 }>
   { unimplemented!() }
}

Шото
типа такого
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
а переполнение на уровне типов для простоты можно уб сделать
источник

EG

Emmanuel Goldstein in rust_offtopic
Нельзя
Гарантируется, что у тебя нет UB, если ты не написал слово unsafe
источник

EG

Emmanuel Goldstein in rust_offtopic
Это должно порождать ошибку компиляции
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
нет такого определения. Там есть список UB который при этом помечен как incomplete. можно добавить ещё одно :)
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
ладно, думаю сделают нормально. Я к тому что можно в типах выражать вещи вроде "не больше чем Х" и их юзать для проверки граничных таких условий
источник

EG

Emmanuel Goldstein in rust_offtopic
Есть. Rust гарантирует, что невозможно породить UB, не написав unsafe.
источник

EG

Emmanuel Goldstein in rust_offtopic
Ну эту фичу пилят, но там свои проблемы
Например, этот код не компилируется, а должен
https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=33e651bc45599c9140c1ecc25dc81b78
источник

EG

Emmanuel Goldstein in rust_offtopic
И она зависит от const_generics, с которыми вообще всё плохо
источник

EG

Emmanuel Goldstein in rust_offtopic
Констдженерики айсятся на раз
источник

AN

Alex Noname in rust_offtopic
а разве для того чтобы это работало не нужна обратимость. Т.е. если у нас есть [T; f(N)] нам нужно знать какие N дают f(N) == M. Хм?
источник

AN

Alex Noname in rust_offtopic
допустим ты написал там N-1 и оно должно вывести область [1..usize::MAX]
источник

AN

Alex Noname in rust_offtopic
иначе будет какое то sfinae а это плохо
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
покажи ссылку плз
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
где они это гарантируют
источник

EG

Emmanuel Goldstein in rust_offtopic
https://doc.rust-lang.org/reference/behavior-considered-undefined.html
> unsafe only means that avoiding undefined behavior is on the programmer

Подразумевая, что обычно это on the compiler
источник