编者按:这个问题中的语法早于Rust 1.0,1.0更新的语法会产生不同的错误,但Rust 1.0中的总体概念仍然相同。
我有一个带有name
字段的结构T,我想从name
函数返回该字符串。我不想复制整个字符串,只是指针:
struct T {
name: ~str,
}
impl Node for T {
fn name(&self) -> &str { self.name }
// this doesn't work either (lifetime error)
// fn name(&self) -> &str { let s: &str = self.name; s }
}
trait Node {
fn name(&self) -> &str;
}
为什么这是错误的?返回
您必须参考self。命名
并确保
struct T {
name: String,
}
impl Node for T {
fn name<'a>(&'a self) -> &'a str {
&self.name
}
}
trait Node {
fn name(&self) -> &str;
}
您还可以使用终身省略,如trait定义中所示。在这种情况下,它会自动将
self
和返回的
请看本书的以下章节:
参考和借用
我遇到了以下两种方式: 只有这两个选择吗?
我的应用程序是应用程序。为了使它变得非常简单,我有,它只是写hello。当在中执行时,这可以很好地工作。
我对编码非常陌生,刚刚接触过静态方法,所以我为这些愚蠢的错误提前道歉。在main下调用该方法时,该方法应该显示一个三角形,但我得到的控制台是空的,没有输出。但是,如果我将此写在main下: 然后,三角形将显示在控制台中,但是对于这个赋值,字符串/三角形必须仅通过使用来调用
问题内容: 在oracles 网站上的Java API中:“ compareTo返回:”如果参数字符串等于此字符串,则值为0;否则为0。如果此字符串在字典上小于字符串参数,则小于0的值;如果该字符串在字典上大于字符串参数,则该值大于0。 这是一个if语句: 由于字符串a在字典上较大,因此返回true。 我的问题是,compareTo总是返回0、1或-1吗?还是返回字符串大于或小于字符串参数的实际
这里我将vec分割成大小相等的4个子向量,然后返回一个集合,我希望从集合中返回的类型是< code>Vec
在下面的程序中,我将一个字符串值作为参数传递给方法print(string),该方法是静态的,返回string。虽然我没有得到错误,但我没有得到输出。