Send
- это признак маркера, который не влияет на структуру памяти. Тем не менее, механика типа Any
остается для меня немного загадочной.
Является ли следующий код звучащим и выполняет ли он то, что я хочу: тип приведения всегда будет корректно понижен до исходного типа бетона:
let what_i_have: Box<dyn Any + Send> = Box::new(69);
let ptr = Box::into_raw(what_i_have);
let what_i_want: Box<dyn Any> = unsafe { Box::from_raw(ptr as *mut dyn Any) };
Я поиграл с этим, и он, кажется, работает нормально. Это так?
В качестве дополнительного вопроса, могу ли я сделать это без блока unsafe
?