// 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. //xfail-test // Sketching traits. // methods with no implementation are required; methods with an // implementation are provided. No "req" keyword necessary. trait Eq { fn eq(a: self) -> bool; fn neq(a: self) -> bool { !self.eq(a) } } // The `<` is pronounced `extends`. Also under consideration is `<:`. // Just using `:` is frowned upon, because (paraphrasing dherman) `:` // is supposed to separate things from different universes. trait Ord < Eq { fn lt(a: self) -> bool; fn lte(a: self) -> bool { self.lt(a) || self.eq(a) } fn gt(a: self) -> bool { !self.lt(a) && !self.eq(a) } fn gte(a: self) -> bool { !self.lt(a) } } // pronounced "impl of Ord for int" -- not sold on this yet impl Ord for int { fn lt(a: &int) -> bool { self < (*a) } // is this the place to put this? fn eq(a: &int) -> bool { self == (*a) } }