Ребят, всем привет, такой вопрос, кто может обяснить мне, зачем

нужны traits? Ведь можно тупо написать ради них impl и всё, зачем нужен этот чертов trait?)

16 ответов

34 просмотра

А как ты обобщенную функцию для, допустим, сравнения напишешь?

Ох, также думал когда начинал учить раст

Yeager-Gizzatullin Автор вопроса
mental stability🥺✨
А как ты обобщенную функцию для, допустим, сравнен...

ну через impl для обобщенных типов, через реализацию Order как то там

Трейт это свойство, которое можно реализовывать на различные типы. Ты можешь указать баунд у генерика, чтобы принимать только те типы, которые имеют это свойство. Благодаря этому, можно указать T: PartialEq и использовать cmp для сравнения - написать сортировку можно. Вот за этим трейты нужны Импл просто делает реализацию под конкретный тип/типы

Инкапсуляции трейты сами по себе не дают, наследования в расте нет. Полиморфизм - да, но он не такой как в ООП джаве

Yeager-Gizzatullin Автор вопроса
mental stability🥺✨
Трейт это свойство, которое можно реализовывать на...

а то тот, который указан на сайте в книге, вообще не зашло, вернее не понял, ибо я до этого чисто на питоне и тут на тебе

mental stability🥺✨
Инкапсуляции трейты сами по себе не дают, наследов...

Нет кончено, но дают, но это один из механизмов который позволяет что-то похожее реализовать.

trait Length { fn len(&self) -> usize } fn is_empty<T: Length>(t: &T) -> bool{ return t.len() > 0; } Ну вот такой, надуманный пример

mental stability🥺✨
trait Length { fn len(&self) -> usize } fn is_emp...

это же не скомпилиться без баунда на T и ты либо return убери, либо ; добавь

Yeager-Gizzatullin Автор вопроса

Извините, баунд- это что?)

Yeager Gizzatullin
Извините, баунд- это что?)

в примере выше T: Length объявляет дженерик T и вешает на него баунд Length это значит, что тип T должен реализовывать трейт Length если его не указать, компилятор будет ругаться из-за того, что у T нет метода len

Похожие вопросы

Обсуждают сегодня

Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Ребята, всем привет. Подскажите, пожалуйста, можно ли как-то через бота понять, что этого бота добавили в группу\канал и выдали ему права администратора?
Artem Stormageddon
9
Привет всем! Почему этот код не срабатывает при добавлении или удалении пользователя из чата? bot.on('chat_member', async (ctx) => { console.log(ctx); }) bot.launch({allo...
Alexander
7
Всем привет. Не понимаю, в чём тут шутка юмора. Убирается только разрешение на send_messages. А send_media_messages остаётся. Как сделать, чтобы оба убирались? await b...
Alexander
2
Есть тут кто занимается разработкой серваков майна? Или знакомые
meow *
3
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Есть ли лимиты на кол-во вебхук по домену? Стоит в данный момент 900+ ботов и бывает бот перестает отвечать (не приходят вебхуки) 🐒 Помогает только перезапуск
ᅠ [ Кому не ответил, дублируйте ]
11
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Товарищи, здравствуйте Подскажите, пожалуйста, может кто-нибудь сталкивался с такой задачей Через вебапку можно сканировать qr-код, а есть ли возможность считывать nfc?
Artem Stormageddon
8
Карта сайта