Vladimir
т.е. сначала Arc<C> -> Arc<Trait> и только потом дергает его Clone
Filipp
https://doc.rust-lang.org/book/second-edition/ch15-02-deref.html#implicit-deref-coercions-with-functions-and-methods
Rust does deref coercion when it finds types and trait implementations in three cases:
From &T to &U when T: Deref<Target=U>.
From &mut T to &mut U when T: DerefMut<Target=U>.
From &mut T to &U when T: Deref<Target=U>.
Vladimir
да, еще стоит не забывать что компилятор имеет право вставлять сколько угодно * и & при coercion
Vladimir
ну он такой и есть
Vladimir
ущербный
Vladimir
зато deref coercion могуч
Alexander
Но тогда остаётся открытым вопрос, почему не работает Arc::clone(&app_channel), если аргумент автоматически приводится.
Vladimir
а вот это хороший вопрос
Vladimir
видимо один вызов путает компилятор
Vladimir
и он не понимает что нужно в итоге получить
Anton
Слушайте посоны
Vladimir
ведь Clone реализован как для Arc<C> -> Arc<C> так и для
Arc<U> -> Arc<U>
Anton
а что для раста нету нормальных либ для растеризации шрифтов с сглаживанием?
Anton
Я просто смотрю на alacrytty и думаю что вот чот нихуя
Anton
плюс у lyon также при отрисовки вообще никакого сглаживания нет, как и у любой либы рисовалки
Маjко
Маjко
По хорошему -- писать на голых указателях, ну или с Rc/Weak шаманить, но проще ансейф отладить, чем сделать второе правильно
Anton
Alexander
Vladimir
Vladimir
и тут уж сорян, циклы в рефкаунтерах это норма
Vladimir
мне кажется ему просто нужно было цикл сделать, и всьо
Маjко
Vladimir
создать структуру с сылкой на саму себя
Vladimir
это полная
Vladimir
может он просто цикл хочет создать
Маjко
Чисто академический интерес?)
Маjко
Есть способы попроще мемориликнуть
Alexander
Ну вот кстати, упоминавшийся выше intrusive-collections - вроде как ставит перед собой целью всякие связные списки делать малой кровью.
Маjко
@yellow_apple Ты же писал 100 и один способ объявить 1i32?
Айда способы ликнуть память в расте)
Vladimir
там помоему 2 способа помимо официальных было
Vladimir
это паники и циклы
Vladimir
из сейф конечно
Vladimir
помимо форгета
պլհկ
1000 и 1 способ отстрелить яйца
Vladimir
хотя наверное с легализацией Мемори ликов
Vladimir
появились разные box.as_ptr()
Vladimir
и прочее
Маjко
Loo
Стреляю в ноги
Loo
Каждый день
Loo
Инвалидировал итератор
Loo
Перепутал базы
Loo
Что дальше?
Loo
պլհկ
Так оно сейф
պլհկ
Дерефить рав птр ансейф
Vladimir
да
պլհկ
А так пожалуйста
Маjко
Вообще интересно
Маjко
Маjко
Box тут уничтожается
Маjко
Почему не вызывается Drop?
Vladimir
смысле?
Vladimir
он не уничтожается
Vladimir
бокс внутрях Uniqueptr
Vladimir
а трансмьют особая магия которая превращает один тип вдругой
Vladimir
ничего не пропало
Vlad
transmute забирает владение
и не вызывает drop
Маjко
Трансмьют форгетит то, что ему передали
Маjко
Всё понятно
Маjко
В доке так и написано)
Маjко
Меня как раз захват владения и смутил: без форгета это неминуемый дроп
Filipp
Интерес академический, структура с ссылкой на себя - самоцель. Хотел посмотреть что сдерайвится в дебаг
Маjко
Filipp
Посмотри последний линк что я скинул
Vlad
Filipp
https://play.rust-lang.org/?gist=26f0e71e86f6e04a96163d351a7f155f&version=stable
еее
Маjко
SO.
Filipp
А лол
Filipp
Я думал ты спрашиваешь "и что"?
Маjко
Да)
Маjко
Еще можно поймать, если заюзать Display в реализации Display)
Маjко
Как-то раз так стрельнул в ногу
Маjко
Not like smth surprising
Filipp
Ну ппринт в питоне умеет ловить циклы
Маjко
Мне казалось, или раст кидал ворнинг о бесконечной рекурсии?