From 3b125ff3bbe77a8601ba2d424e8aa6f254abfd19 Mon Sep 17 00:00:00 2001 From: Eduard Burtescu Date: Wed, 26 Feb 2014 23:02:35 +0200 Subject: Add the DerefImm and DerefMut traits. --- src/libstd/ops.rs | 22 ++++++++++++++++++++++ src/libstd/prelude.rs | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) (limited to 'src/libstd') 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 { fn index(&self, index: &Index) -> Result; } +#[cfg(stage0)] +pub trait Deref { + fn deref<'a>(&'a self) -> &'a Result; +} + +#[cfg(not(stage0))] +#[lang="deref"] +pub trait Deref { + fn deref<'a>(&'a self) -> &'a Result; +} + +#[cfg(stage0)] +pub trait DerefMut: Deref { + fn deref_mut<'a>(&'a mut self) -> &'a mut Result; +} + +#[cfg(not(stage0))] +#[lang="deref_mut"] +pub trait DerefMut: Deref { + 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}; -- cgit 1.4.1-3-g733a5