P.S. вот сам код с ошибкой. тут видно (тот случаай когда подскаки типов рулят), что создаётся слайс из
Закоментированный метод превращает
MaybeUninit<Item>, который затем дропается (что является no-op из-за MaybeUninit). Закоментированный метод превращает
&mut [MaybeUninit<Item>] в &mut [Item] что решает проблему невызванных деструкторов.Писать людям на английском так страшно... не хочу ошибиться и случайно нагрубить...
Вызов методов в расте би лайк:
(да это всё делает одно и тоже и я не щучу)
let a: A = ...;
a.method();
A::method(&a);
<A as Trait>::method(&a);
<_>::method(&a);
// nightly version
A::method.call((&a,));
<A as Trait>::method.call((&a,));
<_>::method.call((&a,));
A::method.call_mut((&a,));
<A as Trait>::method.call_mut((&a,));
<_>::method.call_mut((&a,));
A::method.call_once((&a,));
<A as Trait>::method.call_once((&a,));
<_>::method.call_once((&a,));
(да это всё делает одно и тоже и я не щучу)
Вспомнил ещё три способа:
Trait::method(&a);Так-же &Антон напомнил что
<_ as Trait>::method(&a);
<A>::method(&a);
call{_once,_mut,} это тоже функции так что...<_>::call_once(<_>::method, (&a,));
Немного сумаществия: (playground)На морозе телефон разряжается так быстро, что я не успеваю включить яндекс карты
Я очень плохой человек если наываю модули с разницей в одну букву?
Иногда нужно собраться с мыслями и не сделать что-то. Не написать человеку что он не прав по всем пунктам. Не придраться к неточностям в том твите. Не начать издеваться над тупыми скриптовиками.
Just don't
Just don't