// Copyright 2012 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. //! Traits for the built-in operators #[allow(missing_doc)]; #[lang="drop"] pub trait Drop { fn drop(&self); } #[lang="add"] pub trait Add { fn add(&self, rhs: &RHS) -> Result; } #[lang="sub"] pub trait Sub { fn sub(&self, rhs: &RHS) -> Result; } #[lang="mul"] pub trait Mul { fn mul(&self, rhs: &RHS) -> Result; } #[lang="div"] pub trait Div { fn div(&self, rhs: &RHS) -> Result; } #[lang="rem"] pub trait Rem { fn rem(&self, rhs: &RHS) -> Result; } #[lang="neg"] pub trait Neg { fn neg(&self) -> Result; } #[lang="not"] pub trait Not { fn not(&self) -> Result; } #[lang="bitand"] pub trait BitAnd { fn bitand(&self, rhs: &RHS) -> Result; } #[lang="bitor"] pub trait BitOr { fn bitor(&self, rhs: &RHS) -> Result; } #[lang="bitxor"] pub trait BitXor { fn bitxor(&self, rhs: &RHS) -> Result; } #[lang="shl"] pub trait Shl { fn shl(&self, rhs: &RHS) -> Result; } #[lang="shr"] pub trait Shr { fn shr(&self, rhs: &RHS) -> Result; } #[lang="index"] pub trait Index { fn index(&self, index: &Index) -> Result; } #[cfg(test)] mod bench { use extra::test::BenchHarness; use ops::Drop; // Overhead of dtors struct HasDtor { x: int } impl Drop for HasDtor { fn drop(&self) { } } #[bench] fn alloc_obj_with_dtor(bh: &mut BenchHarness) { do bh.iter { HasDtor { x : 10 }; } } }