2018-08-30 12:18:55 +00:00
|
|
|
// run-pass
|
2015-03-22 20:13:15 +00:00
|
|
|
|
2012-11-12 20:15:08 +00:00
|
|
|
mod a {
|
2013-05-03 23:25:04 +00:00
|
|
|
pub trait Foo {
|
2013-08-09 08:25:24 +00:00
|
|
|
fn foo() -> Self;
|
2013-05-03 23:25:04 +00:00
|
|
|
}
|
2012-11-12 20:15:08 +00:00
|
|
|
|
2015-03-26 00:06:52 +00:00
|
|
|
impl Foo for isize {
|
|
|
|
fn foo() -> isize {
|
2013-05-03 23:25:04 +00:00
|
|
|
3
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-26 00:06:52 +00:00
|
|
|
impl Foo for usize {
|
|
|
|
fn foo() -> usize {
|
2015-03-03 08:42:26 +00:00
|
|
|
5
|
2013-05-03 23:25:04 +00:00
|
|
|
}
|
|
|
|
}
|
2012-11-12 20:15:08 +00:00
|
|
|
}
|
|
|
|
|
2013-02-02 03:43:17 +00:00
|
|
|
pub fn main() {
|
2015-03-26 00:06:52 +00:00
|
|
|
let x: isize = a::Foo::foo();
|
|
|
|
let y: usize = a::Foo::foo();
|
2013-05-19 02:02:45 +00:00
|
|
|
assert_eq!(x, 3);
|
|
|
|
assert_eq!(y, 5);
|
2012-11-12 20:15:08 +00:00
|
|
|
}
|