如何在Rust中返回两个串联字符串的引用

时间:2019-04-19 12:08:33

标签: string rust

我三天前开始学习Rust,所以我才刚刚开始了解内存所有权之类的东西,而在进行练习时遇到了这个问题: 我的目标是在两个碱基之间创建一个转换器,并为此实现了一个Number结构:

pub struct Number {
    string: String, // String that represents the number
    base: u32,      // Base of the number
    negative: bool  // Sign of the number (true: negative, false: positive)
}

在实现中,我想要一个方法.string(),该方法将返回表示数字的字符串,并且当数字为负数时,我尝试在字符串前面插入“-”时出现了问题。这是我写的:

pub fn string(&self) -> &String {
    if self.negative {
        &("-".to_string() + self.string.as_str())
    }
    else { &self.string }
}

编译器说:

error[E0515]: cannot return reference to temporary value
   --> src\number.rs:119:13
    |
119 |             &("-".to_string() + self.string.as_str())
    |             ^----------------------------------------
    |             ||
    |             |temporary value created here
    |             returns a reference to data owned by the current function

所以我的问题是,如何在不创建临时值或不创建字符串副本的情况下做到这一点?

0 个答案:

没有答案