2013-03-05 22:49:03 +00:00
|
|
|
// Tests that methods that implement a trait cannot be invoked
|
|
|
|
// unless the trait is imported.
|
|
|
|
|
|
|
|
mod Lib {
|
|
|
|
pub trait TheTrait {
|
|
|
|
fn the_fn(&self);
|
|
|
|
}
|
|
|
|
|
|
|
|
pub struct TheStruct;
|
|
|
|
|
|
|
|
impl TheTrait for TheStruct {
|
|
|
|
fn the_fn(&self) {}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
mod Import {
|
|
|
|
// Trait is in scope here:
|
|
|
|
use Lib::TheStruct;
|
|
|
|
use Lib::TheTrait;
|
|
|
|
|
|
|
|
fn call_the_fn(s: &TheStruct) {
|
|
|
|
s.the_fn();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
mod NoImport {
|
|
|
|
// Trait is not in scope here:
|
|
|
|
use Lib::TheStruct;
|
|
|
|
|
|
|
|
fn call_the_fn(s: &TheStruct) {
|
2018-12-28 23:11:13 +00:00
|
|
|
s.the_fn();
|
2019-10-26 15:28:02 +00:00
|
|
|
//~^ ERROR E0599
|
2013-03-05 22:49:03 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-09-24 00:20:36 +00:00
|
|
|
fn main() {}
|