
rust
3333333_
大部分都是记录云笔记,有时候复制过来就挺乱的,而且可能复制1年或者几个月前记录的。随缘吧。
展开
-
2.2 waker
rust原创 2023-02-09 12:43:49 · 86 阅读 · 0 评论 -
2.1 future trait
rust原创 2023-02-08 21:55:38 · 119 阅读 · 0 评论 -
1 rust async getting start
rust原创 2023-02-08 21:54:24 · 90 阅读 · 0 评论 -
1 前戏自建server
rust原创 2023-02-08 21:53:09 · 88 阅读 · 0 评论 -
webassembly
进入项目根目录执行 wasm-pack build。修改www/index.js 传参。build后生成pkg目录。项目根目录生成生成前端项目。看到下面alert就OK了。3、如果没装npm就装下。打开src/lib.rs。这时候页面不会alert。修改保存页面就会弹出了。原创 2023-02-08 21:50:01 · 120 阅读 · 0 评论 -
25 结束篇:多线程的web服务器
rust原创 2023-02-08 21:45:11 · 77 阅读 · 0 评论 -
24 高级特性
rust原创 2023-02-08 21:45:10 · 67 阅读 · 0 评论 -
23 模式与模式匹配
rust原创 2023-02-08 21:44:01 · 69 阅读 · 0 评论 -
22 面向对象编程特性
rust原创 2023-02-08 21:42:18 · 72 阅读 · 0 评论 -
21 无畏并发
rust原创 2023-02-08 21:40:47 · 302 阅读 · 0 评论 -
20 智能指针
rust原创 2023-02-08 21:39:53 · 61 阅读 · 0 评论 -
19 cargo和crate io
rust原创 2023-02-07 22:10:05 · 90 阅读 · 0 评论 -
18 迭代器
注意上面的map不是 .map(|a,b|a * b) 如果实在这样会报错。上面是需要mut,下面是不需要mut,因为for是会去的变量所有权。上图的 let v2:Vec 这个下划线 是让编译器自己推断出类型。原创 2023-02-07 22:05:21 · 77 阅读 · 0 评论 -
rust17 闭包
定义结构体,结构体有个泛型参数T,然后有个约束,T就代表这个闭包的类型,而闭包的类型,它的约束是这样的,Fn接收一个u32类型,返回值也是u32类型。原创 2023-02-07 22:04:22 · 79 阅读 · 0 评论 -
14声明周期
rust就获得了足够的信息来支持保证安全的操作,并且阻止那些可能会导致悬垂指针或者是其它违反内存安全的行为。可以看出 生命周期这个语法,就是关联函数的不同参数以及返回值之间的生命周期,一旦它们取得了某种联系。不返回引用,把所有权移交给函数调用者,内存想清理的话就由函数调用者清理。'a 就是x作用域和 y作用域重叠的部分。改成String就有问题了。原创 2023-02-07 22:01:56 · 62 阅读 · 0 评论 -
13 Trait
for &item in list {//item不加&就是对&i32 在item前面价格&,&item类型就是i32 相当于发生了解构 if item > largest { largest = item } } largest } error[E0277]: the trait bound `String: Copy` is not satisfied --> src/main.rs:11:26 | 11 | let result = largest(&string_list);["world"]);原创 2023-02-07 22:01:40 · 178 阅读 · 0 评论 -
rust12泛型
for &item in list {//item不加&就是对&i32 在item前面价格&,&item类型就是i32 相当于发生了解构 if item > largest { largest = item } } largest }原创 2023-02-07 22:00:21 · 88 阅读 · 0 评论 -
11错误处理
Ok(s) //等同于下面注释代码 // match f.read_to_string(&mut s) { // Ok(_) => Ok(s), // Err(e) => Err(e), // } }//不可以自定义信息 //用expect自定义信息 let f = File::open(path).expect("Couldn't open file");原创 2023-02-07 21:59:56 · 139 阅读 · 0 评论 -
10HashMap
/打开执行会报错 } error[E0382]: borrow of moved value: `f_name` --> src/main.rs:8:23 | 4 | let f_name = String::from("a");原创 2023-02-07 21:59:08 · 76 阅读 · 0 评论 -
9String
/这一行会报错 } 因为+类似使用add(self,s:&str)->String{...}//注意这里self没有& error[E0382]: borrow of moved value: `s1` --> src/main.rs:6:20 | 2 | let s1 = String::from("hello");原创 2023-02-07 21:58:22 · 83 阅读 · 0 评论 -
8常用结合
这一块就需要了解vec的工作原理,vec里面的元素在内存中的摆放是连续的,所以在往vec里面添加元素的时候,在内存中可能就没有这么大的内存块,它就可能把这个内存重新分配下,再找一个足够大的内存来放置添加元素之后的vec,这样的话,它原来的那块内存就会被释放或者重新分配。而在内存释放或者重新分配之后,我们&vec[0]还是指向原来的地址,这样的话程序就会出问题。如上面,引用的是vec的第一个元素,那么为什么还要关心向vec末尾添加元素的情况呢?原创 2023-02-07 21:56:58 · 73 阅读 · 0 评论 -
7package crate module
如果是同级创建爱你hosting.rs。第三部,尝试把hosting模块再分出去。目录的层级结构要跟模块层级相匹配。原创 2023-02-06 21:59:44 · 86 阅读 · 0 评论 -
rust6枚举
rust原创 2023-02-06 21:58:52 · 73 阅读 · 0 评论 -
5struct
rust原创 2023-02-06 21:57:11 · 78 阅读 · 0 评论 -
rust4所有权
fn calculate_length(s: &String) -> usize { s.len() }//走到这s就出了作用域,但是由于它并不具有它所指向字符串的所有权,所以它所指向的值不会被清理掉, //跟其他参数一样,s的作用域还是那么大,但与其他参数不同的是,它不会在离开自己作用域的时候销毁其指向的数据 //因为它并不拥有该数据的所有权。("{}", s);("{}", x);但是上面报错的是返回了切片,切片是对s的一部分引用,返回后,就和s.clear()这个可变引用在同一个作用域了。原创 2023-02-06 21:56:25 · 94 阅读 · 0 评论 -
3通用的编程概念
rust原创 2023-02-06 21:54:26 · 96 阅读 · 0 评论 -
2猜数游戏
上面两个图 就表明了RUST强大编译器的作用。原创 2023-02-06 21:51:11 · 80 阅读 · 0 评论 -
1rust入门
rust只适合简单 的程序,复杂的程序就用cargo。原创 2023-02-06 21:50:46 · 80 阅读 · 0 评论 -
rust开发工具
安装插件rust ,smartsemicolon。运行debug会提示你安装debug工具。下载社区版itelli J IDEA。增加live template。添加terminal快捷键。添加关闭所有窗口的快捷键。原创 2023-02-06 21:47:36 · 355 阅读 · 0 评论 -
rust中&与ref
不考虑复制特性,结构体进行匹配时,默认将使用移动语义,结构体字段所有权从结构体移动到被绑定的变量上,原变量失去所有权。某些情况下,使用ref与&是等效的,但ref关键字一般用于要绑定的标识符前,通常这些地方都无法使用&。当&出现在=左侧时,可以用于模式匹配,但通常这种写法都是错的,仅在具备复制特性的类型时才能通过编译。&操作符用于变量名前,表示创建此变量的引用,用于类型名前,表示此类型的借用类型。match在匹配时,会拿走被匹配变量,所以match之后,原变量无法再使用。要避免这种情况,可以使用ref,原创 2023-02-06 21:46:33 · 254 阅读 · 0 评论 -
1rust入门
rust只适合简单 的程序,复杂的程序就用cargo。原创 2022-12-16 22:11:28 · 73 阅读 · 0 评论 -
rust交叉编译-mac编译到linux
一般编程阶段用的是Windows或者Mac系统,部署平台是Linux,这种情况下就需要使用Cross-Compiler交叉编译,意思是可以在当前平台Host下编译出目标平台target的可执行文件,再次执行cargo build --release --target x86_64-unknown-linux-musl。如果要求比较简单,都是X86_64架构,从Mac上编译出x86_64-unknown-linux-musl就好。但是有的项目用到了openssl,就有可能编译报错。,推荐大家仔细的读一读。原创 2022-12-16 22:09:24 · 2373 阅读 · 0 评论 -
陈天老师的Rust培训(2)学习笔记
我在一个函数里面声明一个变量,变量它的数据结构的类型是Sized,那么它就可以放在栈上,反之的话,它不是Sized,是DST的话一般来说只能放在堆上,当然有一些例外,因为DST就意味着编译期的时候,我的大小是不确定的,所以不确定的东西,编译器是没办法把它放在这个栈上的,因为当编译器为函数分配一个新的栈的时候,它需要计算里面用到的局部变量的大小,然后把栈帧指好,这样函数可以正常运行。rust大部分数据结构都是Sized的,如果说一个data type的大小在编译器可以确定的话,它的类型就是Sized。原创 2022-12-16 22:06:47 · 1036 阅读 · 0 评论 -
陈天老师的Rust培训(1)学习笔记
跟C互操作时,加上上面图片的宏,rust会根据你的各个域的内存的占用自动去调整内存中的位置,让你的内存占用是最优的,而且rust在生成数据结构的结构的时候,它会做一些padding,然后这些padding是为了具有更好的performance,但是这样就会对结构体做一些顺序上的调整,以及加一些padding.所有语言的sync await 大概类似上面的东西,就是当你把一个异步的操作,在写代码的时候,你的感知是一个同步的操作,才用的方式就是,把这些东西转换成一个个状态机,去处理状态机的变化。原创 2022-12-16 22:03:34 · 1465 阅读 · 0 评论 -
如何快速掌握新的crates
rust原创 2022-12-16 21:53:08 · 83 阅读 · 0 评论 -
陈天大佬如何学习rust
乔布斯经引用: good artists copy,great artists steal.重要的是,让飞轮转起来,形成习惯。勇于把所学用在你的下一个个人项目。大量练习指的是至少达到万级。我很笨,就是不开窍怎么办?原创 2022-12-15 22:47:55 · 195 阅读 · 0 评论 -
rust中&与ref
不考虑复制特性,结构体进行匹配时,默认将使用移动语义,结构体字段所有权从结构体移动到被绑定的变量上,原变量失去所有权。某些情况下,使用ref与&是等效的,但ref关键字一般用于要绑定的标识符前,通常这些地方都无法使用&。当&出现在=左侧时,可以用于模式匹配,但通常这种写法都是错的,仅在具备复制特性的类型时才能通过编译。&操作符用于变量名前,表示创建此变量的引用,用于类型名前,表示此类型的借用类型。match在匹配时,会拿走被匹配变量,所以match之后,原变量无法再使用。要避免这种情况,可以使用ref,原创 2022-12-15 22:46:18 · 978 阅读 · 1 评论 -
RUST VSCode插件总结
1.rust-analyzer:语言服务器、自动补全、语法高亮等;3.Even Better TOML:toml文件语法高亮显示;5.Error Lens:错误语法加深显示和提醒;6.Tabnine:AI补全代码,提升开发效率。4.crates:方便包的版本安装管理;2.CodeLLDB:debug功能;原创 2022-12-15 22:42:38 · 1610 阅读 · 0 评论 -
rust学习路线
这里风险比较大的意思就是webGPU后面会不会火起来。原创 2022-12-15 22:41:00 · 282 阅读 · 0 评论 -
rust与c++
rust c++原创 2022-12-15 22:40:09 · 905 阅读 · 0 评论