Expand description
trait
或 impl
块中的实现类型,或类型定义中的当前类型。
在类型定义中:
struct Node {
elem: i32,
// `Self` 在这里是 `Node`。
next: Option<Box<Self>>,
}
Run在 impl
块中:
struct Foo(i32);
impl Foo {
fn new() -> Self {
Self(0)
}
}
assert_eq!(Foo::new().0, Foo(0).0);
Run泛型参数隐含在 Self
中:
struct Wrap<T> {
elem: T,
}
impl<T> Wrap<T> {
fn new(elem: T) -> Self {
Self { elem }
}
}
Runtrait Example {
fn example() -> Self;
}
struct Foo(i32);
impl Example for Foo {
fn example() -> Self {
Self(42)
}
}
assert_eq!(Foo::example().0, Foo(42).0);
Run