当前位置: 首页 > 知识库问答 >
问题:

从Rust中的方法返回字符串

韩夕
2023-03-14

编者按:这个问题中的语法早于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;
}

为什么这是错误的?返回


共有1个答案

仲孙宇定
2023-03-14

您必须参考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。虽然我没有得到错误,但我没有得到输出。