Keyword impl[−][src]
Expand description
为类型实现一些功能。
impl
关键字主要用于定义类型的实现。
固有实现是独立的,而 trait 实现则用于为类型或其他 traits 实现 traits。
函数和 const 都可以在实现中定义。impl
块中定义的函数可以是独立的,这意味着将其称为 Foo::bar()
。
如果该函数将 self
,&self
或 &mut self
作为它的第一个参数,则也可以使用方法调用语法来调用它,这是任何面向 object 的程序员 (如 foo.bar()
) 都熟悉的功能。
struct Example { number: i32, } impl Example { fn boo() { println!("boo! Example::boo() was called!"); } fn answer(&mut self) { self.number += 42; } fn get_number(&self) -> i32 { self.number } } trait Thingy { fn do_thingy(&self); } impl Thingy for Example { fn do_thingy(&self) { println!("doing a thing! also, number is {}!", self.number); } }Run
有关实现的更多信息,请参见 Rust book 或 Reference。
impl
关键字的另一个用法是 impl Trait
语法,可以将其视为 “a concrete type that implements this trait” 的简写。
它的主要用途是与闭包一起使用,闭包具有在编译时生成的类型定义,不能简单地将其键入。
fn thing_returning_closure() -> impl Fn(i32) -> bool { println!("here's a closure for you!"); |x: i32| x % 3 == 0 }Run
有关 impl Trait
语法的更多信息,请参见 Rust book。