diff options
| author | Eduard Burtescu <edy.burt@gmail.com> | 2014-02-26 23:02:35 +0200 |
|---|---|---|
| committer | Eduard Burtescu <edy.burt@gmail.com> | 2014-03-04 16:41:48 +0200 |
| commit | 3b125ff3bbe77a8601ba2d424e8aa6f254abfd19 (patch) | |
| tree | 605d8e873a83ebf13c640b861873aa8af1d6c25a | |
| parent | 19fadf6567859bd46d3235c29d61917efc0e0685 (diff) | |
| download | rust-3b125ff3bbe77a8601ba2d424e8aa6f254abfd19.tar.gz rust-3b125ff3bbe77a8601ba2d424e8aa6f254abfd19.zip | |
Add the DerefImm and DerefMut traits.
| -rw-r--r-- | src/librustc/middle/lang_items.rs | 3 | ||||
| -rw-r--r-- | src/libstd/ops.rs | 22 | ||||
| -rw-r--r-- | src/libstd/prelude.rs | 2 |
3 files changed, 26 insertions, 1 deletions
diff --git a/src/librustc/middle/lang_items.rs b/src/librustc/middle/lang_items.rs index bedf8ed0529..ba5d9663c3b 100644 --- a/src/librustc/middle/lang_items.rs +++ b/src/librustc/middle/lang_items.rs @@ -232,6 +232,9 @@ lets_do_this! { ShrTraitLangItem, "shr", shr_trait; IndexTraitLangItem, "index", index_trait; + DerefTraitLangItem, "deref", deref_trait; + DerefMutTraitLangItem, "deref_mut", deref_mut_trait; + EqTraitLangItem, "eq", eq_trait; OrdTraitLangItem, "ord", ord_trait; diff --git a/src/libstd/ops.rs b/src/libstd/ops.rs index ac329e6fe83..2d5d37e1abc 100644 --- a/src/libstd/ops.rs +++ b/src/libstd/ops.rs @@ -464,6 +464,28 @@ pub trait Index<Index,Result> { fn index(&self, index: &Index) -> Result; } +#[cfg(stage0)] +pub trait Deref<Result> { + fn deref<'a>(&'a self) -> &'a Result; +} + +#[cfg(not(stage0))] +#[lang="deref"] +pub trait Deref<Result> { + fn deref<'a>(&'a self) -> &'a Result; +} + +#[cfg(stage0)] +pub trait DerefMut<Result>: Deref<Result> { + fn deref_mut<'a>(&'a mut self) -> &'a mut Result; +} + +#[cfg(not(stage0))] +#[lang="deref_mut"] +pub trait DerefMut<Result>: Deref<Result> { + fn deref_mut<'a>(&'a mut self) -> &'a mut Result; +} + #[cfg(test)] mod bench { extern crate test; diff --git a/src/libstd/prelude.rs b/src/libstd/prelude.rs index 5ea00c2f67d..531833acfb1 100644 --- a/src/libstd/prelude.rs +++ b/src/libstd/prelude.rs @@ -23,7 +23,7 @@ generally useful to many Rust programs. pub use kinds::{Freeze, Pod, Send, Sized}; pub use ops::{Add, Sub, Mul, Div, Rem, Neg, Not}; pub use ops::{BitAnd, BitOr, BitXor}; -pub use ops::{Drop}; +pub use ops::{Drop, Deref, DerefMut}; pub use ops::{Shl, Shr, Index}; pub use option::{Option, Some, None}; pub use result::{Result, Ok, Err}; |
