about summary refs log tree commit diff
diff options
context:
space:
mode:
authorScott McMurray <scottmcm@users.noreply.github.com>2018-12-01 02:07:50 -0800
committerScott McMurray <scottmcm@users.noreply.github.com>2018-12-01 02:07:50 -0800
commita3b7a21268edecc69267fd2b641b22d5bb7844b2 (patch)
tree2ac1a5511fe0aef097b062b6053aa54584b0e009
parentaef4dbfaa7df8221cb4e99cbda1299b47b1c2aca (diff)
downloadrust-a3b7a21268edecc69267fd2b641b22d5bb7844b2.tar.gz
rust-a3b7a21268edecc69267fd2b641b22d5bb7844b2.zip
Improve the unstable book example for `#[marker]`
The previous one didn't actually use the Display&Debug bounds in any way, so I think this one is a bit more meaningful.
-rw-r--r--src/doc/unstable-book/src/language-features/marker-trait-attr.md14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/doc/unstable-book/src/language-features/marker-trait-attr.md b/src/doc/unstable-book/src/language-features/marker-trait-attr.md
index 9dd7b6fae9b..dedc7d3015d 100644
--- a/src/doc/unstable-book/src/language-features/marker-trait-attr.md
+++ b/src/doc/unstable-book/src/language-features/marker-trait-attr.md
@@ -17,15 +17,17 @@ when they'd need to do the same thing for every type anyway).
 ```rust
 #![feature(marker_trait_attr)]
 
-use std::fmt::{Debug, Display};
+#[marker] trait CheapToClone: Clone {}
 
-#[marker] trait MyMarker {}
+impl<T: Copy> CheapToClone for T {}
 
-impl<T: Debug> MyMarker for T {}
-impl<T: Display> MyMarker for T {}
+// These could potentally overlap with the blanket implementation above,
+// so are only allowed because CheapToClone is a marker trait.
+impl<T: CheapToClone, U: CheapToClone> CheapToClone for (T, U) {}
+impl<T: CheapToClone> CheapToClone for std::ops::Range<T> {}
 
-fn foo<T: MyMarker>(t: T) -> T {
-    t
+fn cheap_clone<T: CheapToClone>(t: T) -> T {
+    t.clone()
 }
 ```