我正在实现一个具有嵌套结构调用的方法。我读到有关 Rust 生命周期的内容,我认为我的问题是关于生命周期的,但我无法理解如何在代码中使用它。
#[derive(Debug)]
pub struct Request {
Header: String
}
#[derive(Debug)]
pub enum Proto {
HTTP,
HTTPS
}
#[derive(Debug)]
pub struct HTTP {
ssss: Request,
names: Proto,
}
impl HTTP {
pub fn new(name: Proto) -> HTTP {
HTTP{
ssss.Header: "Herman".to_string(),
names: name,
}
}
}
Run Code Online (Sandbox Code Playgroud)
不可能给 赋值ssss.Header:
#[derive(Debug)]
pub struct Request {
Header: String
}
#[derive(Debug)]
pub enum Proto {
HTTP,
HTTPS
}
#[derive(Debug)]
pub struct HTTP {
ssss: Request,
names: Proto,
}
impl HTTP {
pub fn new(name: Proto) -> HTTP {
HTTP{
ssss.Header: "Herman".to_string(),
names: name,
}
}
}
Run Code Online (Sandbox Code Playgroud)
嵌套结构没有什么神奇之处。您使用与非嵌套结构完全相同的语法:
pub fn new(name: Proto) -> HTTP {
HTTP {
ssss: Request {
header: "Herman".to_string(),
},
names: name,
}
}
Run Code Online (Sandbox Code Playgroud)
如果您发现嵌套太复杂,您可以随时引入一个中间变量:
pub fn new(names: Proto) -> HTTP {
let ssss = Request {
header: "Herman".to_string(),
};
HTTP { ssss, names }
}
Run Code Online (Sandbox Code Playgroud)
注意:Rust 惯用的snake_case标识符如变量、方法和结构体属性。我已将您的重命名Header为header以避免警告。