Size: a a a

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

2020 March 02

В

Вафель in Rust — русскоговорящее сообществo
А пока, можно делать так:

trait NotSafe {
   fn method() {}
}

trait Safe {
   fn method(&self);
}

impl<T: NotSafe> Safe for T {
   fn method(&self) {
       <Self as NotSafe>::method();
   }
}

fn test<T: NotSafe>(x: T) {
   let safe: &dyn Safe = &x;
   
   safe.method();
}
(playground)
источник

AL

Andrey @ozkriff Lesnikov in Rust — русскоговорящее сообществo
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Ещё вопрос: у меня есть две ветки match с одинаковым телом. В них используется полученное при паттерн-матчинге значение. Оно может быть разного типа, но единственное, что мне от него нужно — трейт.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Можно как-то слить их в одну?
источник

r

red75prime in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Ещё вопрос: у меня есть две ветки match с одинаковым телом. В них используется полученное при паттерн-матчинге значение. Оно может быть разного типа, но единственное, что мне от него нужно — трейт.
Нет. Только вынести код в функцию или замыкание
источник

DS

Dmitry Sokolov in Rust — русскоговорящее сообществo
Какие фичи поддерживает сonst fn?
источник

АГ

Алексей Герасимов in Rust — русскоговорящее сообществo
Dmitry Sokolov
Какие фичи поддерживает сonst fn?
может вызываться на этапе компиляции?
источник

AL

Andrey @ozkriff Lesnikov in Rust — русскоговорящее сообществo
Dmitry Sokolov
Какие фичи поддерживает сonst fn?
источник

DS

Dmitry Sokolov in Rust — русскоговорящее сообществo
Алексей Герасимов
может вызываться на этапе компиляции?
я имел ввиду, что можно исполльзовать внутри таких функций

цикл не работает
   const fn f1() {
       for x in 0..10 {
           println!("{}", x); // x: i32
       }
   }
источник

DS

Dmitry Sokolov in Rust — русскоговорящее сообществo
там ни одной галочки
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
Dmitry Sokolov
там ни одной галочки
см. completed
источник

AL

Andrey @ozkriff Lesnikov in Rust — русскоговорящее сообществo
Хм. Вообще да, я хз где сейчас можно найти точную документацию о том, что в конст контексте вызывать можно.
источник

В

Вафель in Rust — русскоговорящее сообществo
Вообще это очень сложный вопрос с грустным ответом. Недавно узнал что в const fn нельзя создавать PhantomData<fn()>, но при этом там можно создать условный struct Wrap(PhantomData<fn()>), при должном костылинге
источник

MV

Mikhail Voronov in Rust — русскоговорящее сообществo
red75prime
Гм. Да. Что-то тут не так.
Она же не как в плюсах хранится в обьекте, а в толстом поинтере на уровень выше. Т.е. технически не должно быть проблем.
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
А как её вызывать потом?
источник

MV

Mikhail Voronov in Rust — русскоговорящее сообществo
Точно также? Только self не передавать
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
Mikhail Voronov
Точно также? Только self не передавать
Точно как же? По чему ты будешь диспатчиться?
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
В языке нет отдельной семантической сущности „витейбл“.
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Как насчёт сделать в расте гиперансейф? Это зона кода которая не проверяется совсем
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Мне один раз не хватило этой фичи
источник