summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_error_codes/src/error_codes/E0369.md
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_error_codes/src/error_codes/E0369.md')
-rw-r--r--compiler/rustc_error_codes/src/error_codes/E0369.md29
1 files changed, 29 insertions, 0 deletions
diff --git a/compiler/rustc_error_codes/src/error_codes/E0369.md b/compiler/rustc_error_codes/src/error_codes/E0369.md
new file mode 100644
index 000000000..ab0f4b408
--- /dev/null
+++ b/compiler/rustc_error_codes/src/error_codes/E0369.md
@@ -0,0 +1,29 @@
+A binary operation was attempted on a type which doesn't support it.
+
+Erroneous code example:
+
+```compile_fail,E0369
+let x = 12f32; // error: binary operation `<<` cannot be applied to
+ // type `f32`
+
+x << 2;
+```
+
+To fix this error, please check that this type implements this binary
+operation. Example:
+
+```
+let x = 12u32; // the `u32` type does implement it:
+ // https://doc.rust-lang.org/stable/std/ops/trait.Shl.html
+
+x << 2; // ok!
+```
+
+It is also possible to overload most operators for your own type by
+implementing traits from `std::ops`.
+
+String concatenation appends the string on the right to the string on the
+left and may require reallocation. This requires ownership of the string
+on the left. If something should be added to a string literal, move the
+literal to the heap by allocating it with `to_owned()` like in
+`"Your text".to_owned()`.