![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Rust
蒲公英干草怪
这个作者很懒,什么都没留下…
展开
-
rust编程-链表:使用struct实现链表,使用堆合并k个升序链表,自定义Display
此处代码中的链表不是泛型,还没有找到泛型实现Display的方法。。。原创 2022-06-06 21:21:21 · 304 阅读 · 1 评论 -
rust编程-线程:无畏并发
目前了解到,Rust实现线程间通信依靠的是消息传递和共享内存两种方式,消息传递必须使用move/clone,而共享内存使用mutex性能有开销。Rust也无法避免死锁和循环引用( 类似于Rc,Arc也不能幸免,但可以使用Atomic Weak来避免循环引用)。use std::thread;use std::time::Duration;use std::sync::mpsc;use std::sync::{Arc,Mutex};fn main(){//线程 println!("===原创 2022-05-30 03:35:35 · 516 阅读 · 0 评论 -
rust编程-智能指针:实现单链表、共享链表、双链表
使用Box实现单链表#[derive(Debug)]struct Node{ value : i32, next : Box<Option<Node>>,}fn main(){ let a = Node{ value : 1, next : Box::new(None), }; let b = Node{ value : 2, next : Box::new(Some(a原创 2022-05-30 02:48:00 · 474 阅读 · 0 评论 -
rust编程-链表:使用枚举实现一个链表
//实现一个链表use List::*;//使用enum创建链表enum List{ Cons(u32,Box<List>),// Cons:元组结构体,包含链表的一个元素和一个指向下一节点的指针 Nil,// Nil:末结点,表明链表结束}//为List创建方法impl List{ //创建一个空的List实例 fn new() -> List{ Nil //这里的Nil实际上为List::Nil }原创 2022-05-18 16:36:02 · 308 阅读 · 0 评论 -
rust编程-元组Display:交换元组的元素
use std::fmt::{self, Formatter, Display};#[derive(Debug)]struct Matrix(f32, f32, f32, f32);//自定义Matrix输出为2行impl Display for Matrix { fn fmt(&self, f: &mut Formatter) -> fmt::Result { write!(f, "({0} {1}) \n({2} {3})",self.0,se原创 2022-05-17 21:34:48 · 227 阅读 · 0 评论 -
rust编程-结构体Display:一个例子
为Color 结构体实现 fmt::Display,应得到如下的输出结果:RGB (128, 255, 90) 0x80FF5ARGB (0, 3, 254) 0x0003FERGB (0, 0, 0) 0x000000代码为:use std::fmt::{self, Formatter, Display};#[derive(Debug)]struct Color { red: u8, green: u8, blue: u8,}impl Display for原创 2022-05-17 21:04:10 · 725 阅读 · 0 评论 -
rust编程-格式化输出
Debugfn main() { println!("{} days", 31);// 不加后缀的话,31 就自动成为 i32 类型。 println!("{} days", 31i64); // 用变量替换字符串有多种写法。 // 比如可以使用位置参数。 println!("{0}, this is {1}. {1}, this is {0}", "Alice", "Bob"); // 可以使用命名参数。 println!("{subject}原创 2022-05-17 19:01:42 · 288 阅读 · 0 评论 -
rust编程:借用
引用和借用引用并不会拥有变量的所有权。默认不允许修改引用的值,但使用可变引用就可以修改引用的值。在同一时间,只能有一个对某一特定数据的可变引用。多个不可变引用是可以的,但是不能在拥有不可变引用的同时拥有可变引用。不可变引用的用户可不希望在他们的眼皮底下值就被意外的改变了。字符串的clear尝试获得一个可变引用,所以下面的程序会报错。fn first_word(s: &String) -> &str { let bytes = s.as_bytes();原创 2022-04-26 22:28:56 · 211 阅读 · 1 评论 -
rust编程:所有权
给函数传值时,类似于赋值函数,可能移动或复制。fn main() { let s = String::from("hello"); // s 进入作用域 takes_ownership(s); // s 的值移动到函数里 ... // ... 所以到这里不再有效 let x = 5; // x 进入作用域 makes_copy(x);原创 2022-04-25 16:21:29 · 211 阅读 · 0 评论 -
rust编程:函数返回值
与C++不同的一点是,rust语句不返回值。下面程序是错的:fn main() { let x = (let y = 6);}但是表达式可以返回值。注意:表达式的结尾没有分号,不然就变成语句了。下面程序正确:fn main() { let y = { let x = 3; x + 1 }; println!("The value of y is: {}", y);}在 Rust 中,函数(->)的返回值等同于函数体最原创 2022-04-25 13:10:55 · 2636 阅读 · 0 评论 -
rust编程:基本数据类型
浮点数默认是f64类型,和f32速度差不多。元组元组中每个数据元素可以不是同一个类型。元组的长度是固定的。没有任何值的元组 () 只有一个元素。数组数组中每个数据元素必须是同一个类型。元组的长度是固定的。...原创 2022-04-25 10:34:44 · 188 阅读 · 0 评论 -
rust编程:let和mut的变量和可变性
加上mut关键字之后,就不可以改变变量类型!!!下面程序正确fn main() { let spaces = " "; let spaces = spaces.len();}下面程序错误fn main() { let mut spaces = " "; spaces = spaces.len();}原创 2022-04-25 09:33:57 · 675 阅读 · 0 评论 -
rust编程:let和mut在大括号的作用域
下面这段程序,第一个x输出为12,第二个x输出为6(可以理解大括号内的let为重新定义的变量)fn main() { let x = 5; let x = x + 1; { let x = x * 2; println!("The value of x in the inner scope is: {}", x); } println!("The value of x is: {}", x);}下面这段程序,第一.原创 2022-04-25 09:24:31 · 275 阅读 · 0 评论 -
rust编程:Hello World & Hello Cargo
rust编程:Hello World & Hello Cargo原创 2022-04-21 14:44:44 · 146 阅读 · 0 评论