![](https://img-blog.csdnimg.cn/07a855f125d44ff68c58138873f1fc3c.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Rust
文章平均质量分 91
Rust
简明编程
CSDN简明编程,掘金白嫖圣手fly,其他地方均不是本人,若发现他人盗用本人原创文章请联系我,各种资料均免费,需要请私信
展开
-
Slint学习文档
用于定义一个组件,这样就可以再rs文件中进行书写{}通过自定义结构体就能声明复杂的类型,这通常来说并不能再称之为属性,而是内部数据!(按照作用)但在本文还是称为属性,但请严格进行辨别。原创 2023-09-04 16:49:36 · 2865 阅读 · 3 评论 -
Rust-Rocket框架笔记
该Respondertrait文档详细说明了如何通过显式实现trait来实现您自己的自定义响应器。然而,对于大多数用例,Rocket使得自动派生的实现成为可能Responder。特别是,如果您的自定义响应程序包装了现有的响应程序、标头或设置了自定义状态或内容类型,Responder。原创 2023-05-03 02:32:18 · 2469 阅读 · 2 评论 -
研读Rust圣经解析——Rust learn-16(高级trait,宏)
接下来我们就直接自定义宏,少说废话,直接开干(为什么要学这个?因为甚至可以使用这个自己写一门语言)tt词条树是指Rust编译器使用的一种数据结构,通常用于处理宏(Macro)和代码生成(Code Generation)。tt指的是"Token Tree",它是由一系列"Token"构成的树形结构。"Token"是编程语言中最基础的语法单元,例如关键字、标识符、运算符、括号等等。而"Token Tree"则是这些"Token"按一定的层次结构排列而成的树。原创 2023-04-29 17:35:22 · 1716 阅读 · 3 评论 -
研读Rust圣经解析——Rust learn-15(unsafe Rust )
不过千万注意,使用不安全 Rust 风险自担:如果不安全代码出错了,比如解引用空指针,可能会导致不安全的内存使用。我们在学习一些Rust项目的时候,我们很可能在代码中看到一些使用其他语言的例子,事实上这个特性并不是Rust所独有的,只是你在Rust中使用起来更加为所欲为,在其他语言中,很可能是语言帮你隐式的调用,而非你能够感受的到(如:Java获取环境变量)extern关键字可以创建一个外部函数接口以使用其他语言的函数,以下是调用了C语言中的abs函数,至于成不成功,这需要程序员保证,而不是Rust。原创 2023-04-28 20:21:26 · 1453 阅读 · 1 评论 -
研读Rust圣经解析——Rust learn-14(面向对象)
继承(Inheritance)是一个很多编程语言都提供的机制,一个对象可以定义为继承另一个对象定义中的元素,这使其可以获得父对象的数据和行为,而无需重新定义。面向对象讲究封装,调用者无需知道如果实现,只需要知道如何使用即可,Rust的包管理、模块管理、pub关键字、函数fn,trait这些符合封装的思想。多态是面向对象的一个重要特征,指同一类事物同时具有多种形态,即同一类事物,在不同时刻,代表的对象不一样,指的是对象的多种形态。从这里看,Rust不是面向对象的,因为Rust没有继承只有实现(trait)原创 2023-04-26 16:16:55 · 847 阅读 · 1 评论 -
研读Rust圣经解析——Rust learn-13(并发)
并发编程(Concurrent programming),代表程序的不同部分相互独立的执行,而 并行编程(parallel programming)代表程序不同部分于同时执行,这两个概念随着计算机越来越多的利用多处理器的优势时显得愈发重要。因为我们的线程常和闭包一起使用,所以也自然产生通过move关键字获取环境中取得的值的所有权并将这些值的所有权从一个线程传送到另一个线程。如下,这段程序是有问题的,在线程中并不能打印x的值,因为x的所有权还在main线程,所以我们应该通过使用move转移所有权。原创 2023-04-26 15:30:28 · 497 阅读 · 0 评论 -
研读Rust圣经解析——Rust learn-12(智能指针)
我们也可以自己去写一个Box其实这并不难,首先我们需要为结构体实现new方法,这很简单,传入一个泛型返回带泛型的结构体即可let x = 5;assert_eq!(5 , x);assert_eq!(5 , * y);type:你看作一个类型代指(想想TypeScript中的type)后面会讲deref方法:需要返回引用自身的target,也就是我们上面的类型代指,其实就是返回本身的self中的实际内容(想想unwrap系列的解构)此时我们自己定义的智能指针就可以使用进行解引用了。原创 2023-04-19 17:04:00 · 861 阅读 · 0 评论 -
研读Rust圣经解析——Rust learn-11(测试,迭代器,闭包)
如下,我们使用||{}10 };println!fn->i32,对于但语句来说将{}省略也是OK的。原创 2023-04-19 11:02:13 · 345 阅读 · 0 评论 -
研读Rust圣经解析——Rust learn-10(泛型,trait,生命周期)
为结构体的实现方法也可以设置泛型?不是的,是应为结构体就是个泛型,所以为结构体实现方法的时候需要在impl上设置println!使用trait关键字就可以定义一个trait,我们在其中去定义我们需要的子类实现的方法,无需指定方法的具体行为fn init();我们为一个变量定义生命周期只需要再加上'a实际上你可以写任意的字母或单词(static,等关键词除外,因为是静态生命周期,后面说),生命周期一般设置在方法上,为了指明作用域结束后的回收println!b } else {原创 2023-04-18 23:30:37 · 541 阅读 · 0 评论 -
研读Rust圣经解析——Rust learn-9(集合,错误处理)
当出现 panic 时,程序默认会开始 展开(unwinding),这意味着 Rust 会回溯栈并清理它遇到的每一个函数的数据,不过这个回溯并清理的过程有很多工作。幸运的是,枚举的成员都被定义为相同的枚举类型,所以当需要在 vector 中储存不同类型值时,我们可以定义并使用一个枚举。如果值是 Err,Err 中的值将作为整个函数的返回值,就好像使用了 return 关键字一样,这样错误值就被传播给了调用者。vector 允许我们在一个单独的数据结构中储存多于一个的值,它在内存中彼此相邻地排列所有的值。原创 2023-04-17 14:07:19 · 330 阅读 · 0 评论 -
研读Rust圣经解析——Rust learn-8(match,if-let简洁控制流,包管理)
比如:当周一的时候我要上课,周三的时候我要去钓鱼,而其他时间都得要上班,这时候使用other和占位符就很好,我只要处理周一和周三即可,其他都是相同的操作。实际上if-let就是if+let的结合模式,来处理只匹配一个模式的值而忽略其他模式的情况,若你只想处理一种情况,这比使用match更加好。通过使用use关键字,我们可以对内部可公开的引用直接使用,无需通过模块名称进行指定,这对于一些深模块是非常有用的。,这是一个特殊的模式,可以匹配任意值而不绑定到该值。当我们不想使用通配模式获取的值时,请使用。原创 2023-04-16 16:35:14 · 684 阅读 · 0 评论 -
研读Rust圣经解析——Rust learn-7(结构体与枚举,Option)
如下我们定义了一个父母的枚举,使用enum关键字其实这和struct中是一样的也是使用impl关键字。原创 2023-04-16 15:19:36 · 426 阅读 · 0 评论 -
研读Rust圣经解析——Rust learn-5(所有权,强大的String)
String but not only String,这是我认为对Rust中的String最准确的一句话,因为Rust中String不是简单的一个char数组,它有很多花样,以至于我看来,如果你弄懂了Rust的String你就掌握了类型精髓的三分之一(可能大家觉得三分之一很少,但是真正了解后你会知道这是很多的内容),接下来我会详细的解析’String’类型。String是存在堆上的。借用的值在移动后,也就是说所属于a的值被移动了,移动到了b,此时b抢占了a的String的所有权,致使a的值失效了!原创 2023-04-15 21:56:20 · 882 阅读 · 0 评论 -
研读Rust圣经解析——Rust learn-6(引用与借用,Slice)
我们来理解一下:r1和r2都是不变的,我们将其看成只读,当两个人在看一个非常严谨的文章时,r3这个可变的去把文章修改了,这就出现了问题,不可变的引用和可变引用若同时进行处理,那我们应该以哪一个为准呢?在上一篇文章中我们说了所有权转移-作用域消费的问题,我们应该清楚这样的问题很平常,十分常见,而我们更希望我们能够在变量传入作用域之后依然能够使用,甚至是使用在作用域中经过一些处理之后的变量,因此引用产生。如何处理引用紊乱呢?这个问题是我们在使用不可变引用的同时也使用了可变引用产生的,当然换一下顺序依然!原创 2023-04-15 22:53:54 · 508 阅读 · 2 评论 -
研读Rust圣经解析——Rust learn-4(函数,注释,控制流)
我们可能会遇到多个循环叠加的情况,当内部循环结束需要跳出外部循环时这很有效,而这也是Rust生命周期的妙用。Rust可以检测你的文档注释中的代码是否有问题,这既可以保证代码的正确性也能保证文档的实时性。所有程序员都力求使其代码易于理解,不过有时还需要提供额外的解释,这就是注释。loop 关键字告诉 Rust 一遍又一遍地执行一段代码直到你明确要求停止。在Rust中我们可以为一个变量设定一个函数表达式以设定变量的值。Rust中的for比较像python的因为他就是for-in。函数的用处在于代码封装和复用。原创 2023-04-14 16:19:45 · 522 阅读 · 0 评论 -
研读Rust圣经解析——Rust learn-3(变量与可变性,数据类型)
所以Rust中直接声明的变量无法改变也是因为需要保证系统的安全,要知道如果程序的模块庞大而分散的时候,在一个地方声明的一个变量在另一个遥远的地方被改变了很容易引发难以追踪的错误。关键字进行变量声明,但是我们要知道如此声明的变量是不可变的!我们可以通过声明同一个变量名来修改变量,这样的修改是可以做到无视原始类型的,相当于重新进行了声明,官方称之为隐藏,但我更倾向于覆盖。这是个非常经典的问题,因为其他语言中也会有,在Rust中你多数时候不会意识到整型溢出,因为这并不会被检测出来,只有你使用。原创 2023-04-14 01:07:38 · 463 阅读 · 0 评论 -
研读Rust圣经解析——Rust learn-2(Cargo)
本来我是想要使用英语来写的,但是想了一下很多意思可能用英语无法表述出来,由于我的第一语言目前依然是JAVA所以在解释的时候可能会沿用一些JAVA中的概念进行类比,后续我也会录制相关视频进行讲解。原创 2023-04-13 14:53:09 · 645 阅读 · 0 评论 -
Rust-learn-1
Rust 语言由 Mozilla 开发,最早发布于 2014 年 9 月。Rust 的编译器是在 MIT License 和 Apache License 2.0 双重协议声明下的免费开源软件。截至目前( 2020 年 1 月)最新的编译器版本是 1.41.0。Rust 语言是一种高效、可靠的通用高级语言。其高效不仅限于开发效率,它的执行效率也是令人称赞的,是一种少有的兼顾开发效率和执行效率的语言。原创 2023-04-09 02:46:55 · 423 阅读 · 0 评论