Size: a a a

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

2020 September 01

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Эрик
Да и макрос там только для удобного impl Clone for MyStruct: DynClone.
Ты Box забыл, но вот мой поинт в том, что можно без него
источник

Э

Эрик in Rust — русскоговорящее сообществo
вафель 🧇
Ты Box забыл, но вот мой поинт в том, что можно без него
Можно что?
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Эрик
Можно что?
Всё.

В std сделать impl<T: ?Sized + DynClone> Clone for Box<T> {}
источник

Э

Эрик in Rust — русскоговорящее сообществo
вафель 🧇
Всё.

В std сделать impl<T: ?Sized + DynClone> Clone for Box<T> {}
Ну пропробуй в dyn_clone крейте запихать такой impl. DynClone не std трейт, так что должно работать, нет?
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Эрик
Ну пропробуй в dyn_clone крейте запихать такой impl. DynClone не std трейт, так что должно работать, нет?
> Clone for Box<T>
>> Clone
источник

Э

Эрик in Rust — русскоговорящее сообществo
А, да, orphan rules не в ту сторону работают.
источник

V

Vladimir in Rust — русскоговорящее сообществo
вафель 🧇
Всё.

В std сделать impl<T: ?Sized + DynClone> Clone for Box<T> {}
только impl<T: !Sized + DynClone> Clone for Box<T> {}
так как для T:Clone уже есть клон
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Vladimir
только impl<T: !Sized + DynClone> Clone for Box<T> {}
так как для T:Clone уже есть клон
Для T: Clone придётся убрать ¯\_(ツ)_/¯
источник

Э

Эрик in Rust — русскоговорящее сообществo
вафель 🧇
Для T: Clone придётся убрать ¯\_(ツ)_/¯
Это может оказаться breaking change.
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Негативных баундов нет
источник

V

Vladimir in Rust — русскоговорящее сообществo
Но вообще для этого нужна поддержка стд языка, чтобы можно было писать еще

Trait + DynClone что сейчас только для встроенных трейтов есть.
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Эрик
Это может оказаться breaking change.
да вроде не должно
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Vladimir
Но вообще для этого нужна поддержка стд языка, чтобы можно было писать еще

Trait + DynClone что сейчас только для встроенных трейтов есть.
trait MyTrait: Trait + DynClone { } go brrrr


> что сейчас только для встроенных трейтов есть.
Не для встроенных, а для auto
источник

V

Vladimir in Rust — русскоговорящее сообществo
вафель 🧇
trait MyTrait: Trait + DynClone { } go brrrr


> что сейчас только для встроенных трейтов есть.
Не для встроенных, а для auto
Разве для всех авто?
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Vladimir
Разве для всех авто?
да
источник

V

Vladimir in Rust — русскоговорящее сообществo
ну тогда должно работать в стд)
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Ну только DynClone не сделаешь auto, если что
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Вообще печальное ограничение, неужто так сложно vtable расширить без боилерплейта с объявлением нового трейта?
источник

V

Vladimir in Rust — русскоговорящее сообществo
вафель 🧇
Ну только DynClone не сделаешь auto, если что
Почему?
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Vladimir
Почему?
auto не может иметь методов
источник