]> git.lizzy.rs Git - rust.git/commitdiff
Add an example to Trait section of reference
authorSteve Klabnik <steve@steveklabnik.com>
Wed, 5 Aug 2015 19:31:19 +0000 (15:31 -0400)
committerSteve Klabnik <steve@steveklabnik.com>
Wed, 5 Aug 2015 19:31:19 +0000 (15:31 -0400)
Fixes #26115

src/doc/reference.md

index fdb45c32a1d608eeb7d84eda0fcc849d2fc98e62..e905ed917d7fd1c49f27b9455a370bfa2742595e 100644 (file)
@@ -1501,7 +1501,29 @@ have an implementation for `Shape`. Multiple supertraits are separated by `+`,
 `trait Circle : Shape + PartialEq { }`. In an implementation of `Circle` for a
 given type `T`, methods can refer to `Shape` methods, since the typechecker
 checks that any type with an implementation of `Circle` also has an
-implementation of `Shape`.
+implementation of `Shape`:
+
+```rust
+struct Foo;
+
+trait Shape { fn area(&self) -> f64; }
+trait Circle : Shape { fn radius(&self) -> f64; }
+# impl Shape for Foo {
+#     fn area(&self) -> f64 {
+#         0.0
+#     }
+# }
+impl Circle for Foo {
+    fn radius(&self) -> f64 {
+        println!("calling area: {}", self.area());
+
+        0.0
+    }
+}
+
+let c = Foo;
+c.radius();
+```
 
 In type-parameterized functions, methods of the supertrait may be called on
 values of subtrait-bound type parameters. Referring to the previous example of