Rust 如何返回使用本地声明变量的结构实例

Rust 如何返回使用本地声明变量的结构实例,rust,rust-cargo,Rust,Rust Cargo,我试图找出如何在本地声明变量,并在返回的值中使用它。以下是导致问题的代码 use std::io; use std::string::String; use std::io::Write; // Used for flush implicitly use topping::Topping; pub fn read_line(stdin: io::Stdin, prompt: &str) -> String { print!("{}", prompt); let _

我试图找出如何在本地声明变量,并在返回的值中使用它。以下是导致问题的代码

use std::io;
use std::string::String;
use std::io::Write; // Used for flush implicitly
use topping::Topping;

pub fn read_line(stdin: io::Stdin, prompt: &str) -> String {
    print!("{}", prompt);
    let _ = io::stdout().flush();
    let mut result = String::new();
    let _ = stdin.read_line(&mut result);
    return result;
}

pub fn handle_topping<'a>(stdin: io::Stdin) -> Topping<'a>{
    let name = read_line(stdin, "Topping name: ");
    //let price = read_line(stdin, "Price: ");
    return Topping {name: &name, price: 0.7, vegetarian: false};
}
使用std::io;
使用std::string::string;
使用std::io::Write;//用于隐式刷新
使用浇头::浇头;
pub fn read_行(stdin:io::stdin,提示符:&str)->String{
打印!(“{}”,提示);
let=io::stdout().flush();
让mut result=String::new();
让u=stdin.读取u行(&mut结果);
返回结果;
}
pub fn把手{
让名称=读线(标准名称,顶部名称:);
//让价格=读线(标准,价格:);
返回顶部{name:&name,价格:0.7,素食者:false};
}
我有以下结构作为帮助器

pub struct Topping<'a> {
    pub name: &'a str,
    pub vegetarian: bool,
    pub price: f32,
}
pub-struct-top-src/helpers.rs:17:28
|
17 |返回顶部{名称:&名称,价格:0.7,素食者:假};
|^^^^^^活得不够长
18 | }
|-借来的价值仅在此处有效
|
注意:借用值必须在14:58时主体上定义的生命周期“a”内有效。。。
-->src/helpers.rs:14:59
|
14 | pub fn把手|顶部{
|从这里开始。。。
15 | | |让名称=读|行(标准名称,“顶级名称:”);
16 | |//让价格=读线(标准,“价格:”);
17 | |返回顶部{名称:&名称,价格:0.7,素食者:假};
18 | | }
|| u^……到此结束

我并不特别想更改结构,我更愿意就我不理解的内容获得一些建议。

只需将
Topping.name
&str
转换为
字符串


您不能返回对
读取行
(一个
字符串
)结果的引用,因为该
字符串
将在
句柄
结束时删除。但是,您可以将
字符串的所有权
移动到结构中,并返回
顶部{name:String,veg:bool,…}

感谢@Shepmaster指向正确的文章