cf56624a4a
Zero and One have precise definitions in mathematics. Documentation has been added to describe the appropriate uses for these traits and the laws that they should satisfy. For more information regarding these identities, see the following wikipedia pages: - http://wikipedia.org/wiki/Additive_identity - http://wikipedia.org/wiki/Multiplicative_identity
35 lines
843 B
Rust
35 lines
843 B
Rust
// Copyright 2013 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 <LICENSE-APACHE or
|
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
// option. This file may not be copied, modified, or distributed
|
|
// except according to those terms.
|
|
|
|
#[feature(macro_rules)];
|
|
|
|
use std::default::Default;
|
|
|
|
pub struct X<T> {
|
|
a: T,
|
|
}
|
|
|
|
// reordering these bounds stops the ICE
|
|
impl<T: Default + Eq + Default> Default for X<T> {
|
|
fn default() -> X<T> {
|
|
X { a: Default::default() }
|
|
}
|
|
}
|
|
|
|
macro_rules! constants {
|
|
() => {
|
|
let _ : X<int> = Default::default();
|
|
}
|
|
}
|
|
|
|
pub fn main() {
|
|
constants!();
|
|
}
|