我三天前开始学习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
所以我的问题是,如何在不创建临时值或不创建字符串副本的情况下做到这一点?