2019-11-19 18:43:24 -06:00
|
|
|
//@ run-rustfix
|
|
|
|
|
|
|
|
pub trait Foo {
|
|
|
|
fn zero(self) -> Self;
|
|
|
|
}
|
|
|
|
|
|
|
|
impl Foo for u32 {
|
|
|
|
fn zero(self) -> u32 { 0u32 }
|
|
|
|
}
|
|
|
|
|
|
|
|
pub mod bar {
|
|
|
|
pub use Foo;
|
|
|
|
pub fn bar<T: Foo>(x: T) -> T {
|
|
|
|
x.zero()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
mod baz {
|
|
|
|
use bar;
|
|
|
|
use Foo;
|
2020-03-13 21:28:14 -05:00
|
|
|
pub fn baz<T: Foo + Copy>(x: T) -> T {
|
2019-11-19 18:43:24 -06:00
|
|
|
if 0 == 1 {
|
|
|
|
bar::bar(x.zero())
|
|
|
|
} else {
|
|
|
|
x.zero()
|
|
|
|
};
|
|
|
|
x.zero()
|
|
|
|
//~^ ERROR use of moved value
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let _ = baz::baz(0u32);
|
|
|
|
}
|