Нельзя. Последнее поле должно быть дженериком, ну или структура repr(C), чтобы такое создать. С дженериком как-то так будет выглядеть: struct A<T> { ..., last: T, } let a: A<Concrete> = A { ..., last: concrete }; let a: &A<dyn Trait> = &a;
Странно, что ты про CoerceUnsized не рассказал
Тут box syntax вроде бы не нужен
я прост заглянул в реализацию Arc и сделал как там
он очень unstable и очень слабый
и тут вообще не он нужен, а Unsize
без него неприятно и через ансейф
а с Box::new разве не должно тоже получится?
а да, тоже получилось, но есть различия
Обсуждают сегодня