diff options
| author | Matthew Piziak <matthew.piziak@gmail.com> | 2016-08-15 15:34:02 -0400 |
|---|---|---|
| committer | Matthew Piziak <matthew.piziak@gmail.com> | 2016-08-15 15:34:02 -0400 |
| commit | 18edae42379da4ffd0df5a4e9c3d69f383451c91 (patch) | |
| tree | 1d4b143f211ddc863ff2634f2ce2a7b308e9b734 /src | |
| parent | f65d96fe3fa3cfae2cfc88be40f7416a22c88bf2 (diff) | |
| download | rust-18edae42379da4ffd0df5a4e9c3d69f383451c91.tar.gz rust-18edae42379da4ffd0df5a4e9c3d69f383451c91.zip | |
expound on limitations of Rust's trait-based operator overloading
Part of #29330
Diffstat (limited to 'src')
| -rw-r--r-- | src/libcore/ops.rs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/libcore/ops.rs b/src/libcore/ops.rs index 9347ac2a8c8..4ac1b8394f4 100644 --- a/src/libcore/ops.rs +++ b/src/libcore/ops.rs @@ -10,11 +10,16 @@ //! Overloadable operators. //! -//! Implementing these traits allows you to get an effect similar to -//! overloading operators. +//! Implementing these traits allows you to overload certain operators. //! //! Some of these traits are imported by the prelude, so they are available in -//! every Rust program. +//! every Rust program. Only operators backed by traits can be overloaded. For +//! example, the addition operator (`+`) can be overloaded through the `Add` +//! trait, but since the assignment operator (`=`) has no backing trait, there +//! is no way of overloading its semantics. Additionally, this module does not +//! provide any mechanism to create new operators. If traitless overloading or +//! custom operators are required, you should look toward macros or compiler +//! plugins to extend Rust's syntax. //! //! Many of the operators take their operands by value. In non-generic //! contexts involving built-in types, this is usually not a problem. |
