A
Size: a a a
A
p
A
BD
trait Foo {
fn bar() -> Result<(), ()>;
}
impl Foo for Baz {
fn bar() -> Result<(), ()> {
if cond { Ok() } else { Err() }
}
}
impl Foo for Bat {
fn bar() -> Result<(), ()>::Ok {
Ok()
}
}
p
p
EG
trait Foo {
fn bar() -> Result<(), ()>;
}
impl Foo for Baz {
fn bar() -> Result<(), ()> {
if cond { Ok() } else { Err() }
}
}
impl Foo for Bat {
fn bar() -> Result<(), ()>::Ok {
Ok()
}
}
EG
r
Result<(), !>
EG
Result<(), !>
r
EG
Result<(), Infallible>
, что семантически то же самое.BD
EG
let result: Result<T, !> = ...;
let Ok(x) = result;
p
EG
BD
p
r
p