各位老铁们,大家好,今天由我来为大家分享Rust 结构,以及的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
Rust 结构是一种由一组数据组成的数据类型。组成结构的每条数据称为该结构的“成员”。 Rust 语言中定义结构的关键字是struct。 //Rust 结构定义的语法//Rust 结构是复合类型。 //结构中的所有元素/字段必须清楚地表明其数据类型。 (可以是基本类型,也可以是其他结构体) struct Employee { name: String, company: String,age: u32,}//创建结构体实例//创建结构体实例或者初始化结构体本质上就是创建变量。 //使用let关键字创建一个变量。 //let instance_name=Name_of_struct {//field1:value1,//field2:value2,//field3:value3//};//结构体初始化实际上就是给结构体中的每个元素赋值。 //注意:不要忘记结尾的分号; fn main() { //访问结构体实例//如果要访问结构体实例的元素,我们可以使用元素访问器,即点( . ) let emp1=Employee { company: String:from(‘ baidu’), name: String:from(‘hello’),age: 50, }; println!( ‘姓名为{} – 公司为{} – 年龄为{}’, emp1.name, emp1.company, emp1.age ); //输出:姓名是hello – 公司是baidu – 年龄是50 //修改结构体的实例//修改结构体的实例就是重新分配结构体的各个元素。 //结构体实例默认是不可修改的,因为结构体实例也是使用let定义的变量。 //如果要修改结构体实例,则必须在创建时添加mut关键字,使其可修改。 let mut emp2=Employee { company: String:from(‘taobao’), name: String:from(‘world’),age: 50, }; emp2.年龄=66; println!( ‘姓名为{} – 公司为{} – 年龄为{ }’, emp2.name, emp2.company, emp2.age ); //输出:名字是world – 公司是taobao – 年龄是66 //该结构体用作函数的参数//该结构体的用途之一是可以作为参数传递给函数。 //定义结构体参数的语法与定义其他类型参数的语法相同。显示(emp1); //输出:姓名是hello – 公司是baidu – 年龄是50 display(emp2); //输出:名字是world – 公司是taobao – 年龄是66 //结构体实例是函数的返回值let old=who_is_older(emp1, emp2); println!(‘旧的是’);显示(较旧); //输出//old is 名字是world – 公司是taobao – 年龄是66 } //定义一个函数display ,它接受Employee 结构体实例作为参数,并输出该结构体的所有元素fn display(emp:Employee){ println! ( ‘Name is {} – company is {} -age is {}’, emp.name, emp.company , emp.age );}//结构体实例作为函数的返回值//指定结构体作为返回参数后的箭头-。 //返回函数内部结构体的实例fn who_is_older(emp1:Employee,emp2:Employee)-Employee{ if emp1.age emp2.age{ return emp1; }否则{ 返回emp2; }}//结构中的方法//Rust 结构中可以定义方法。 //方法是一段代码的逻辑组合,用于完成特定的任务或实现特定的功能。
//方法和函数有什么区别? //1. Function(函数)没有所有者,即它属于谁,因此可以直接调用。 //2.方法(method)有一个所有者,调用时必须指定所有者。 //3. 函数(function)没有所有者,两个具有相同签名的函数不能出现在同一个程序中。 //4.方法(method)有一个所有者,不同的所有者可以拥有相同签名的方法。 //结构方法的范围仅限于结构内部。 //Rust 中的结构体方法只能在结构体外部定义。 //定义结构体方法时需要使用impl关键字。 //struct my_struct {}//impl my_struct {////属于该结构体的所有其他代码//}//impl 关键字最重要的作用是定义我们上面提到的方法的所有者。 //当对结构体使用普通方法时,第一个参数始终是self 关键字。 struct Mystruct { width: u32, height: u32,}//实现结构体impl Mystruct { fn area(self) – u32 { self.width * self.height }}//结构体的静态方法//静态方法可以直接传递通过结构体名称而不首先实例化它。 //结构体的静态方法定义与普通方法类似。唯一的区别是不需要使用self 作为参数。 struct Point{ x:i32, y:i32}impl Point { //创建Point 实例的静态方法fn get_instance(x:i32, y:i32)-Point{ Point { x: x, y: y } } //显示结构元素的普通方法fn display(self) { println!(‘x={} – y={}’,self.x,self.y); }}fn main() { //创建Mystruct 结构体的实例letsmall=Mystruct { width: 10, height: 20, }; println!(‘Mystruct 的面积为{}’,small.area()); //输出:Mystruct 的面积为200 //调用静态方法let p1=Point:get_instance(10, 20 ); p1.display(); //输出:x=10 – y=20}
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/126547.html
用户评论
一样剩余
rust 的结构体真的太强大了!能高效地组合不同数据类型,而且类型安全简直太棒了!学起来还是有点费劲,但是掌握了基本用法后感觉效率直线提升。
有17位网友表示赞同!
(り。薆情海
这篇博文解释得很清楚,我之前对 rust 结构体的理解不太深刻,看了之后豁然开朗!原来结构体可以用在很多地方,我要好好练手练习一下。
有13位网友表示赞同!
拥菢过后只剰凄凉
Rust 的结构体确实很强大,但是学习成本有点高啊。虽然类型安全带来的好处是实实在在的,但对于初学者来说,各种字段、方法注解和 lifetimes 的概念还是很难理解。
有18位网友表示赞同!
玻璃渣子
终于找到一份讲清楚 rust 结构体使用方法的文章了!之前网上好多教程都太深奥了,看得一头雾水。这篇文章就是干货满满,实用性强!
有5位网友表示赞同!
ゞ香草可樂ゞ草莓布丁
我以前用 C++ 开发的时候就喜欢使用结构体来管理数据,现在在 Rust 中也延续这种风格,不过 Rust 的实现方式更加严谨和安全,感觉真是太棒了!
有19位网友表示赞同!
北染陌人
Rust 结构体的 `enum` 和类型匹配真的很不错,可以优雅地处理不同的逻辑。这篇文章虽然简短,但关键点都涵盖了,推荐给想学习 Rust 的朋友们。
有17位网友表示赞同!
我家的爱豆是怪比i
这篇博文讲了些基础知识,对于已经学习过一点 Rust 的人来说可能有些浅显,希望能有更深入的解析和应用实例。
有6位网友表示赞同!
々爱被冰凝固ゝ
Rust 结构体确实能提高代码的可读性和维护性,但是我觉得它对初学者来说学习门槛有点高。希望将来会有更多易于理解的教程出来,普及 Rust 文化
有20位网友表示赞同!
优雅的叶子
喜欢 Rust 结构体的简洁明快风格!类型安全简直太棒了,可以有效避免一些常见错误。以后我会更常在项目中使用结构体来组织代码。
有20位网友表示赞同!
败类
学习结构体真是个枯燥的过程… 理解 lifetimes 和 borrow checker 的规则实在让人头疼。不过为了写出更高质量的 Rust 代码,还是要咬咬牙坚持下去!
有11位网友表示赞同!
莫飞霜
对 rust 结构体的操作方式越来越熟悉了,现在能更快地编写出高效的代码。这篇文章的内容也很实用,特别是关于结构体方法和属性的部分,很有启发!
有5位网友表示赞同!
瑾澜
感觉 Rust 的结构体设计比 C++ 要更成熟一些,类型安全机制更完善,能够避免更多潜在错误。 学习 Rust 也是为了提高自己的编程能力水平,毕竟未来越来越多的应用都依赖于 Rust 特性
有16位网友表示赞同!
炙年
虽然 Rust 结构体的学习曲线比较陡峭,但是掌握后真的能提升很多 coding 效率!这篇博文讲得很好,我已经开始把它融入我的项目开发中了。
有19位网友表示赞同!
夏至离别
Rust 的结构体确实很强大,可以让代码变得更加清晰和模块化。不过对于新手来说,语法和概念的学习曲线比较高,需要花更多的时间去理解和练习。
有5位网友表示赞同!
有一种中毒叫上瘾成咆哮i
我一直在寻找一篇讲解 Rust 结构体的实用教程,这篇文章刚好符合我的需求!内容组织得很好,很容易上手。 我已经开始尝试在自己的项目中应用结构体了!
有16位网友表示赞同!