struct接收参数类型不匹配报错_Rust:Struct结构体和方法

定义Struct

如下方式定义一个Struct结构体:

struct Person{
     
  name: String,
  age: u32,
  email: String,
}

定义Struct后,可创建其实例对象:

fn main(){
     
  let user1 = Person{
    name: String::from("junmajinlong"),
    email: String::from("junmajinlong@xx.com"),
    age: 23,
  };
  println!(
    "name: {}, age: {}, email: {}",
    user1.name, user1.age, user1.email
  );
}

Rust调试输出

上面示例中使用println!()输出user1实例的各字段值,这样可以查看实例各属性的信息,但比较麻烦。

更方便的方式应该是直接输出struct实例,例如println!("{}", user1)。实际上,如果指定的类型实现了Display(就像Ruby中定义了to_s一样),那么可直接输出struct。

即使没有实现Display,Rust的println!()也支持两种调试输出的语法{:?}{:#?},它们可以根据默认的格式输出数据类型。它们的作用就像Ruby里的p方法和pp方法一样。

但是,Rust不能直接使用这两个调试输出语法,它要求在目标struct的前面加上一行#[derive(Debug)]

例如:

#[derive(Debug)]

struct Person {
  name: String,
  age: u32,
  email: String,
}

fn main() {
  let user1 = Person {
    name: String::from("junmajinlong"),
    email: String::from("junmajinlong@xx.com"),
    age: 23,
  };
  println!("{:?}", user1);
  println!("{:#?}", user1);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值