Test {
x: u8
}
pub trait TestData {
}
impl TestData for Test {
}
enum TestDataEnum{
AAA(Test)
}
impl TestDataEnum{
fn data(&self) -> Result<& impl TestData> {
if let TestData::AAA(data) = self {
Ok(data)
} else {
Err(_)
}
}
при вызове .data().unwrap() получать не & impl TestData, a Test?
Можно. Поменяй возвращаемый тип у data на Result<&Data> 🤷♂
Я наверно не совсем корректно описал что хочу. Думаю можно ли в data() возращать разные структуры, более чем одну, TestA, TestB.... т.д., для которых сделал impl trait.
Нет. impl Trait в возвращаемой позиции — это некий конкретный тип. Один.
Прекратил попытки, спасибо)
Можешь возвращать enum из нужных типов
Только если TestData будет требовать или предоставлять метод для превращения в Test
Обсуждают сегодня