about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKamal Marhubi <kamal@marhubi.com>2016-01-22 14:37:37 -0500
committerKamal Marhubi <kamal@marhubi.com>2016-01-22 14:37:37 -0500
commit9624b68207c8c8d216e6e981088cb54d46aa1152 (patch)
treeca417e4bbedffc04cf7ca27c5dc777bb5789c00a
parent8f36038490559a98efcba3521564663b15785d9c (diff)
downloadrust-9624b68207c8c8d216e6e981088cb54d46aa1152.tar.gz
rust-9624b68207c8c8d216e6e981088cb54d46aa1152.zip
book: Clarify that trait or type must be in same crate as impl
-rw-r--r--src/doc/book/traits.md14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/doc/book/traits.md b/src/doc/book/traits.md
index d40689190e7..2101533af51 100644
--- a/src/doc/book/traits.md
+++ b/src/doc/book/traits.md
@@ -277,11 +277,15 @@ This will compile without error.
 This means that even if someone does something bad like add methods to `i32`,
 it won’t affect you, unless you `use` that trait.
 
-There’s one more restriction on implementing traits: either the trait, or the
-type you’re writing the `impl` for, must be defined by you. So, we could
-implement the `HasArea` type for `i32`, because `HasArea` is in our code. But
-if we tried to implement `ToString`, a trait provided by Rust, for `i32`, we could
-not, because neither the trait nor the type are in our code.
+There’s one more restriction on implementing traits: either the trait
+or the type you’re implementing it for must be defined by you. Or more
+precisely, one of them must be defined in the same crate as the `impl`
+you're writing.
+
+So, we could implement the `HasArea` type for `i32`, because we defined
+`HasArea` in our code. But if we tried to implement `ToString`, a trait
+provided by Rust, for `i32`, we could not, because neither the trait nor
+the type are defined in our crate.
 
 One last thing about traits: generic functions with a trait bound use
 ‘monomorphization’ (mono: one, morph: form), so they are statically dispatched.