// Core operators and kinds. #[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="add"] pub trait Add { pure fn add(rhs: &RHS) -> Result; } #[lang="sub"] pub trait Sub { pure fn sub(rhs: &RHS) -> Result; } #[lang="mul"] pub trait Mul { pure fn mul(rhs: &RHS) -> Result; } #[lang="div"] pub trait Div { pure fn div(rhs: &RHS) -> Result; } #[lang="modulo"] pub trait Modulo { pure fn modulo(rhs: &RHS) -> Result; } #[lang="neg"] pub trait Neg { pure fn neg() -> Result; } #[lang="bitand"] pub trait BitAnd { pure fn bitand(rhs: &RHS) -> Result; } #[lang="bitor"] pub trait BitOr { pure fn bitor(rhs: &RHS) -> Result; } #[lang="bitxor"] pub trait BitXor { pure fn bitxor(rhs: &RHS) -> Result; } #[lang="shl"] pub trait Shl { pure fn shl(rhs: &RHS) -> Result; } #[lang="shr"] pub trait Shr { pure fn shr(rhs: &RHS) -> Result; } #[lang="index"] pub trait Index { pure fn index(+index: Index) -> Result; }