编者注:实施RFC 599后,此代码不再产生相同的错误,但答案中讨论的概念仍然有效.
我正在尝试编译此代码:
trait A {
fn f(&self);
}
struct S {
a: Box<A>,
}
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
a.rs:6:13: 6:14 error: explicit lifetime bound required
a.rs:6 a: Box<A>,
Run Code Online (Sandbox Code Playgroud)
我想S.a拥有一个实例A,并且不知道这个生命周期是如何合适的.我需要做些什么才能使编译器满意?
我的Rust版本:
rustc --version
rustc 0.12.0-pre-nightly (79a5448f4 2014-09-13 20:36:02 +0000)
Run Code Online (Sandbox Code Playgroud) 我正在尝试从位于单独文件中的模块调用函数,该函数是公共的,我使用完整路径调用它,但是rustc仍然抱怨"未解析的名称".
pub mod b;
fn main() {
b::f()
}
Run Code Online (Sandbox Code Playgroud)
pub mod b {
pub fn f(){
println!("Hello World!");
}
}
Run Code Online (Sandbox Code Playgroud)
$ rustc a.rs
a.rs:3:5: 3:9 error: unresolved name `b::f`.
Run Code Online (Sandbox Code Playgroud)
当我将模块移动到包的主文件时,一切正常.
pub mod b {
pub fn f(){
println!("Hello World!");
}
}
fn main() {
b::f()
}
Run Code Online (Sandbox Code Playgroud)
这两种方式不应该是等价的吗?我做错了什么,或者是生锈的错误?