Rust从入门到实战系列二百七十四:打印结构体

  1. 🌟🌟 我们可以使用 #[derive(Debug)] 让结构体变成可打印的.
    // 填 空 , 让 代 码 工 作
    #[__]
    struct Rectangle {
    width: u32,
    height: u32,
    }
    fn main() {
    let scale = 2;
    let rect1 = Rectangle {
    width: dbg!(30 * scale), // 打 印 debug 信 息 到 标 准 错 误 输 出 stderr,并 将 30 * scale height: 50, }; dbg!(&rect1); // 打 印 debug 信 息 到 标 准 错 误 输 出 stderr println!(__, rect1); // 打 印 debug 信 息 到 标 准 输 出 stdout } 结构体的所有权 当解构一个变量时,可以同时使用 move 和引用模式绑定的方式。当这么做时,部分 move 就会发生:变 量中一部分的所有权被转移给其它变量,而另一部分我们获取了它的引用。 在这种情况下,原变量将无法再被使用,但是它没有转移所有权的那一部分依然可以使用,也就是之前被 引用的那部分。 示例 fn main() { #[derive(Debug)] struct Person { name: String, age: Box<u8>, } let person = Person { name: String::from("Alice"), age: Box::new(20), }; // 通 过 这 种 解 构 式 模 式 匹 配 ,person.name 的 所 有 权 被 转 移 给 新 的 变 量 name// 但 是 , 这 里age变 量 却 是 对 person.age 的 引 用, 这 里 ref 的 使 用 相 当 于: let age = &p let Person { name, ref age } = person; println!("The person's age is {}", age); println!("The person's name is {}", name); // Error! 原 因 是 person 的 一 部 分 已 经 被 转 移 了 所 有 权 , 因 此 我 们 无 法 再 使 用 它 //println!("The person struct is {:?}", person); // 虽 然person作 为 一 个 整 体 无 法 再 被 使 用 , 但 是person.age` 依 然 可 以 使 用
    println!(“The person’s age from person struct is {}”, person.age);
    }
    练习
  2. 🌟🌟
    // 修 复 错 误
    #[derive(Debug)]
    struct File {
    name: String,
    data: String,
    }
    fn main() {
    let f = File {
    name: String::from(“readme.md”),
    data: “Rust By Practice”.to_string()
    };
    let _name = f.name;
    // 只 能 修 改 这 一 行
    println!(“{}, {}, {:?}”,f.name, f.data, f);
    }
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值