У меня есть трейт-объект, и я хочу знать конкретный объект, на который он указывает, но я не могу понять, как получить этот конкретный объект.
Я хочу что-то вроде следующего:
trait MyClonable {
/** copy from another MyClonable */
fn my_clone_from(&mut self, other: &Self)->Result<(), MyError>;
}
impl MyClonable for SomeType {
fn my_clone_from(&mut self, other: &MyClonable)->Result<(), MyError> {...}
}
Чтобы я мог сказать что-то вроде:
let mut new_thing = SomeType::new();
new_thing.my_clone_from(&old_thing)?;
Тогда new_thing
будет содержать своего рода копию old_thing
, если только old_thing
не имеет неожиданного типа, и в этом случае он должен возвращать ошибку.
Но Rust не позволит мне получить что-то вроде Option<&SomeType>
из MyClonable
.