// Core operators and kinds. #[forbid(deprecated_mode)]; #[forbid(deprecated_pattern)]; #[lang="const"] pub trait Const { // Empty. } #[lang="copy"] pub trait Copy { // Empty. } #[lang="send"] pub trait Send { // Empty. } #[lang="owned"] pub trait Owned { // Empty. } #[lang="drop"] pub trait Drop { fn finalize(&self); // XXX: Rename to "drop"? --pcwalton } #[lang="add"] pub trait Add { pure fn add(rhs: &RHS) -> Result; } #[lang="sub"] pub trait Sub { pure fn sub(&self, rhs: &RHS) -> Result; } #[lang="mul"] pub trait Mul { pure fn mul(&self, rhs: &RHS) -> Result; } #[lang="div"] pub trait Div { pure fn div(&self, rhs: &RHS) -> Result; } #[lang="modulo"] pub trait Modulo { pure fn modulo(&self, rhs: &RHS) -> Result; } #[lang="neg"] pub trait Neg { pure fn neg(&self) -> Result; } #[lang="bitand"] pub trait BitAnd { pure fn bitand(&self, rhs: &RHS) -> Result; } #[lang="bitor"] pub trait BitOr { pure fn bitor(&self, rhs: &RHS) -> Result; } #[lang="bitxor"] pub trait BitXor { pure fn bitxor(&self, rhs: &RHS) -> Result; } #[lang="shl"] pub trait Shl { pure fn shl(&self, rhs: &RHS) -> Result; } #[lang="shr"] pub trait Shr { pure fn shr(&self, rhs: &RHS) -> Result; } #[lang="index"] pub trait Index { pure fn index(index: Index) -> Result; }