Size: a a a

2021 May 27

AS

Aleksey Sidorov in rust_offtopic
Самое смешное, что не то чтобы по названию, хех
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
так что
fn f<T:MyTrait>(obj: T) { obj.myfunc() }
источник

SS

Steel Sword in rust_offtopic
В этом коде питон ищет метод по названию. Там у объекта хеш-таблица со ссылками на методы
источник

AS

Aleksey Sidorov in rust_offtopic
Ага, помню заклинания Александреску на тему, а "давайте вот так вот сделаем compile time проверки".
источник

TK

Traveller Kolsky in rust_offtopic
При условии, что в трейт баунде есть myfunc. Разворачивается в <T as MyTrait>::myfunc([&[mut]] obj) или просто <obj as MyTrait>.myfunc()
источник

AS

Aleksey Sidorov in rust_offtopic
Что Раст что Сишка всегда оперируют с адресами функций, никаких тебе названий в рантайме
источник

goldstein опять in rust_offtopic
Кроме тех случаев, когда нет, и тогда ты ругаешься и пишешь макрос, который генерирует экстеншн трейт
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
как будто в питоне не так. Только там у тебя знание о трейте не в типчиках а в башке
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
что хуево
источник

goldstein опять in rust_offtopic
В питоне не так. В питоне ты в типчики эту инфу можешь перенести с помощью typing.Protocol, а экстеншн трейтов писать всё равно не придётся
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
как часто тебе нужно "не важно что главное чтобы у него была фунцкия с таким именем и сигнатурой"?
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
мне наоборот бывало нудно, что у меня есть интерфейсы Dog и Cat а ебучий ТС воспринимает их взаимозаменяемо
источник

goldstein опять in rust_offtopic
Да постоянно. Например, i64::abs это inherent-функция, а не трейт
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
и что? Написал трейт один раз и все
источник

TK

Traveller Kolsky in rust_offtopic
Так имеет смысл передавать функции в таком случае
источник

goldstein опять in rust_offtopic
Не «написал», а «наговнокодил макросов»
источник

goldstein опять in rust_offtopic
И не «один раз», а «для каждого метода, который забыли вынести в трейт»
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
как угодно. Это лучше чем принимать что угодно с именем abs
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
для каждого метода - один раз
источник

goldstein опять in rust_offtopic
Это очень много раз
источник