(no title)
benschulz | 4 years ago
fn some_func() -> impl SomeTrait {
if some_condition {
Either::Left(a)
} else {
Either::Right(b)
}
}
Both a and b will implement SomeTrait which is all callers care about. However, because they're structurally different they must be wrapped in an Either that delegates all methods from SomeTrait to a or b respectively.
codeflo|4 years ago
For object-safe traits where this would be possible, you can at least do this at the cost of an allocation, as you probably know: