У меня есть объект черты, и я хочу знать конкретный объект, на который он указывает, но я не могу понять, как получить конкретный объект.
Что я хочу, это что-то вроде следующего:
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
.