summaryrefslogtreecommitdiff
path: root/exercises
diff options
context:
space:
mode:
authorDan Wilhelm <dan@danwilhelm.com>2020-05-28 20:21:33 -0700
committerDan Wilhelm <dan@danwilhelm.com>2020-05-28 20:21:33 -0700
commit173bb14140c5530cbdb59e53ace3991a99d804af (patch)
tree9d5d2414a2c919a12b431b8600c599a0f59843c7 /exercises
parent918f310674272e2547b1fa599b5e474618d5e489 (diff)
feat: Add traits README
Diffstat (limited to 'exercises')
-rw-r--r--exercises/traits/README.md20
1 files changed, 20 insertions, 0 deletions
diff --git a/exercises/traits/README.md b/exercises/traits/README.md
new file mode 100644
index 0000000..1ce46fe
--- /dev/null
+++ b/exercises/traits/README.md
@@ -0,0 +1,20 @@
+### Traits
+
+A trait is a collection of methods.
+
+Data types can implement traits. To do so, the methods making up the trait are defined for the data type. For example, the `String` data type implements the `From<&str>` trait. This allows a user to write `String::from("hello")`.
+
+In this way, traits are somewhat similar to Java interfaces and C++ abstract classes.
+
+Some additional common Rust traits include:
+
++ `Clone` (the `clone` method),
++ `Display` (which allows formatted display via `{}`), and
++ `Debug` (which allows formatted display via `{:?}`).
+
+Because traits indicate shared behavior between data types, they are useful when writing generics.
+
+
+#### Book Sections
+
+- [Traits](https://doc.rust-lang.org/book/ch10-02-traits.html) \ No newline at end of file