Size: a a a

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

2020 March 09

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Вафель
Ааа...
Я помню, что без баунда на структуре почему-то не компилировалось. Не помню почему, завтра посмотрю свежим взглядом
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Mikail Bagishov
Но при этом тип может хранить значение типа T, или ссылку на него, или что-то подобное
Логично, но () -> T это ещё более непонятно
источник

В

Вафель in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Логично, но () -> T это ещё более непонятно
Ну в этом есть смысл, т.к. у тебя где-то в Storage есть ... -> T (это же так работает?...)
источник

В

Вафель in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Я помню, что без баунда на структуре почему-то не компилировалось. Не помню почему, завтра посмотрю свежим взглядом
ок
источник
2020 March 10

В

Вафель in Rust — русскоговорящее сообществo
Почему если есть

trait AtLeast2 
where
   Self: Type,
   Self::Assoc: Type,

То баунд T: AtLeast2 даёт компилятору знание что T: Type, но не что T::Assoc: Type?

Я бы ожидал что такой код скомпилируется:
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=9adf2ab3b23ecf21ebfaed72cd4dadf0

Но нет :(
источник

🦉⁣

🦉 ⁣ in Rust — русскоговорящее сообществo
Вафель
Почему если есть

trait AtLeast2 
where
   Self: Type,
   Self::Assoc: Type,

То баунд T: AtLeast2 даёт компилятору знание что T: Type, но не что T::Assoc: Type?

Я бы ожидал что такой код скомпилируется:
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=9adf2ab3b23ecf21ebfaed72cd4dadf0

Но нет :(
оч странные рекурсивные типы
источник

В

Вафель in Rust — русскоговорящее сообществo
🦉 ⁣
оч странные рекурсивные типы
Это ещё не странные %)
источник

M

Mikhail in Rust — русскоговорящее сообществo
Вафель
Это ещё не странные %)
ты продолжаешь серию изнасилований компилятора?)
источник

В

Вафель in Rust — русскоговорящее сообществo
Mikhail
ты продолжаешь серию изнасилований компилятора?)
Ага. Но конкретно тут не насилование, а просто костыли
источник

r

red75prime in Rust — русскоговорящее сообществo
Вафель
Почему если есть

trait AtLeast2 
where
   Self: Type,
   Self::Assoc: Type,

То баунд T: AtLeast2 даёт компилятору знание что T: Type, но не что T::Assoc: Type?

Я бы ожидал что такой код скомпилируется:
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=9adf2ab3b23ecf21ebfaed72cd4dadf0

Но нет :(
Trait bound inference ещё не доделали
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
Mikhail
ты продолжаешь серию изнасилований компилятора?)
да пусть играется, глядишь свой Александреску вырастет
источник

ED

Eto Demerzel in Rust — русскоговорящее сообществo
Boris Vinogradov
да пусть играется, глядишь свой Александреску вырастет
Есть мнение, что это плохо.
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
Eto Demerzel
Есть мнение, что это плохо.
Мнение можно записать, к себе в блокнотик. А метапрограммирование ещё ни одному языку хуже не сделало
источник

AL

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

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
Вафель
Почему если есть

trait AtLeast2 
where
   Self: Type,
   Self::Assoc: Type,

То баунд T: AtLeast2 даёт компилятору знание что T: Type, но не что T::Assoc: Type?

Я бы ожидал что такой код скомпилируется:
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=9adf2ab3b23ecf21ebfaed72cd4dadf0

Но нет :(
А с чего он должен? Ты же нигде не сказал что T::Assoc: Type.
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
Ты об этом скажешь если раскомментируешь строчку 18
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
А иначе компилятор не может в этом удостовериться, так как есть вероятность что T будет Type, но <T as Type>::Assoc не будет Type.
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
Ты можешь сделать в определении Type сделать баунд
trait Type {
   type Assoc: Type;
}
источник

В

Вафель in Rust — русскоговорящее сообществo
Mikola Summer Duck
А с чего он должен? Ты же нигде не сказал что T::Assoc: Type.
Я указал в AtLeast2
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
Вафель
Я указал в AtLeast2
В атлист2 это у тебя не дефинишн, а баунд.
источник