如何创建嵌套结构?

Joh*_*ove 0 struct rust

我正在实现一个具有嵌套结构调用的方法。我读到有关 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)

She*_*ter 6

嵌套结构没有什么神奇之处。您使用与非嵌套结构完全相同的语法:

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标识符如变量、方法和结构体属性。我已将您的重命名Headerheader以避免警告。