[Rust] Struct Update Syntax

https://doc.rust-lang.org/stable/book/ch05-01-defining-structs.html#creating-instances-from-other-instances-with-struct-update-syntax

 

Similar to Javascript spread syntax

let your_order = Order {name: String::from("Hacker in Rust"), count: 1, ..order_template};

Full Code:

#[derive(Debug)]
struct Order {
    name: String,
    year: u32,
    made_by_phone: bool,
    made_by_mobile: bool,
    made_by_email: bool,
    item_number: u32,
    count: u32,
}

fn create_order_template() -> Order {
    Order {
        name: String::from("Bob"),
        year: 2019,
        made_by_phone: false,
        made_by_mobile: false,
        made_by_email: true,
        item_number: 123,
        count: 0,
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn your_order() {
        let order_template = create_order_template();
        let your_order = Order {name: String::from("Hacker in Rust"), count: 1, ..order_template};
        assert_eq!(your_order.name, "Hacker in Rust");
        assert_eq!(your_order.year, order_template.year);
        assert_eq!(your_order.made_by_phone, order_template.made_by_phone);
        assert_eq!(your_order.made_by_mobile, order_template.made_by_mobile);
        assert_eq!(your_order.made_by_email, order_template.made_by_email);
        assert_eq!(your_order.item_number, order_template.item_number);
        assert_eq!(your_order.count, 1);
    }
}

 

posted @   Zhentiw  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2020-02-26 [TypeScript] as const, force immutability for Object type
2020-02-26 [Typescript] Using 'Pick' to create a sub-type from original type
2019-02-26 [Functional Programming] Capture Side Effects in a Task / Async
2019-02-26 [Compose] 9. Delay Evaluation with LazyBox
2019-02-26 [Functional Programming] Unbox types with foldMap
2018-02-26 [HTML5] Inlining images with SVG and data URIs
2016-02-26 [Unit Testing] Directive testing, require parent controller
点击右上角即可分享
微信分享提示