rust 结构体类型

概述

rust结构体与c中的结构体类似,都使用关键字struct定义。
如:
struct 结构体名 {
成员1:类型1,
成员2: 类型2,

}

结构体定义

struct Building{
	location: String,
	high: u32,
	nubmer: u32,
}

结构体变量对象

let soho = Building {
	location: String::from("beijing"),
	high: 32,
	nubmer: 5,
}

结构体成员变量访问

println!("{}", soho.location);
println!("{}", soho.high);
println!("{}", soho.nubmer);

结构体打印输出

如上,结构体可以使用成员变量的方式打印输出,也可以使用如下方式:

  • 导入调试库#[derive(Debug)]
  • println 和 print 宏中用 {:?} 占位符输出一整个结构体
  • 如果属性较多的话可以使用另一个占位符 {:#?}

如下实例:

#[derive(Debug)]

struct Rectangle {
    width: u32,
    height: u32,
}

fn main() {
    let rect1 = Rectangle { width: 30, height: 50 };

    println!("rect1 is {:?}", rect1);
    println!("rect1 is {:#?}", rect1);
}

输出结果:

rect1 is Rectangle { width: 30, height: 50 }
rect1 is Rectangle {
    width: 30,
    height: 50,
}

结构体方法

面向对象的思想可以在rust中实现,可以使用结构体方法(关键字self),实现结构体的成员访问,如下:

struct Rectangle {
    width: u32,
    height: u32,
}
   
impl Rectangle {
    fn area(&self) -> u32 {
        self.width * self.height
    }
}

fn main() {
    let rect1 = Rectangle { width: 30, height: 50 };
    println!("rect1's area is {}", rect1.area());
}

输出结果:

rect1's area is 1500

结构体关联函数

之所以"结构体方法"不叫"结构体函数"是因为"函数"这个名字留给了这种函数:它在 impl 块中却没有 &self 参数。
这种函数不依赖实例,但是使用它需要声明是在哪个 impl 块中的。
一直使用的 String::from 函数就是一个"关联函数"。

#[derive(Debug)]
struct Rectangle {
    width: u32,
    height: u32,
}

impl Rectangle {
    fn create(width: u32, height: u32) -> Rectangle {
        Rectangle { width, height }
    }
}

fn main() {
    let rect = Rectangle::create(30, 50);
    println!("{:?}", rect);
}

运行结果:

Rectangle { width: 30, height: 50 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天选码农搬砖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值