首页 > TAG信息列表 > Mut

Rust 标准库

1.One-Liners 1.strings // 1. 拼接字符串 format!("{x}{y}") // 2.显示Display write!(x, "{y}") // 3. 分隔符分开string,s.split(pattern) s.split("abc"); s.split('/'); s.split(char::is_numeric()); s.slit_whitespace(); s.lines(); //

rust 语法小册子

1. 数据结构 通过关键字定义的数据类型和内存位置 struct S{}定义一个命名成员的结构体 struct S {x:T} 定义一个结构体,成员名为x,成员类型为T struct S(T) 定义元组类型结构体,成员.0类型为T struct S 定义零长单元结构体,不占空间哦 enum E{} 定义一个枚举类, enum E{A, B(), C

0040-Bytes-bytes源码阅读

环境 Time 2022-05-29 Rust 1.61.0 Bytes 1.1.0 前言 说明 参考: https://github.com/tokio-rs/bytes https://zhuanlan.zhihu.com/p/109977513 目标 之前阅读的部分,都是关于静态的字节,后面开始涉及到动态。其中有很多关于原子类型的操作,来实现无锁并发。 这里不深入,先简单理解

Rust变量用法与特征

变量用法与特征 变量绑定 let a = "hello world"  为何不用赋值而用绑定呢(其实你也可以称之为赋值,但是绑定的含义更清晰准确)?这里就涉及 Rust 最核心的原则——所有权,简单来讲,任何内存对象都是有主人的,而且一般情况下完全属于它的主人,绑定就是把这个对象绑定给一个变量,让这个变量

【Rust】树02-二叉树

环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 实现了二叉树的前序、中序和后序遍历。 示例 引入模块 pub mod binary_tree; 结构定义 use super::{NodeRef, Tree}; #[derive(Default)] pub struct Binary

【Rust】树04-二叉搜索树

环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 相比较二叉树,二叉搜索树的左节点都比父节点小,右节点都比父节点大。 基于二叉树来实现二叉搜索树,先实现插入和检索方法。 示例 引入模块 pub mod binary_search

【Rust】树05-二叉搜索树

环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 相比较二叉树,二叉搜索树的左节点都比父节点小,右节点都比父节点大。 基于二叉树来实现二叉搜索树,实现删除方法。 示例 引入模块 pub mod binary_search_tree;

【Rust】树07-平衡二叉树

环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 二叉树有个不好的地方,就是在最坏情况下,可能退化成单链表的结构。 比如按从小到大的顺序插入,节点都在右孩子上,平衡二叉树(AVL)可以解决这种情况。 示例 引入模块

rust iter 2

use std::ptr; use std::fmt::{ Display, Formatter, Result }; pub struct Node { value: i32, next: *mut Node } impl Node { pub fn new(val: i32) -> Self { Node { value: val, next: ptr::null_mut(), }

rust mopa

#[macro_use] extern crate mopa; struct Bear { // This might be a pretty fat bear. fatness: u16, } impl Bear { fn eat(&mut self, person: Box<dyn Person>) { self.fatness = (self.fatness as i16 + person.weight()) as u16; }

线程池筛质数

多线程通过竞争获取数据计算是否为质数。 例程:pthread_pool_busy.c #include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <string.h> #define LEFT 30000000#define RIGHT 30000200#define THRNUM 4 static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALI

rust 迭代

fn main() { let values = vec![1, 2, 3]; for v in values.into_iter() { println!("{}", v) } // 下面的代码将报错,因为 values 的所有权在上面 `for` 循环中已经被转移走 // println!("{:?}",values); let values = vec![1, 2, 3]; le

rust 助剂

 https://kaisery.github.io/trpl-zh-cn/foreword.html   rust 的核心思想是 由程序员,语法,编译器 共同 维护 程序内的变量生成,使用,复制,转移和销毁。 基本数据类型 i8,i16,i32,i64,i128 // 有符号整数 u8,u16,u32,u64,u128 // 无符号整数 isize, usize // 机器字长整数 和 无符号

【Rust】标准库-双端队列

环境 Time 2022-04-02 Rust 1.59.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构。 特点 双端队列可以在队首或者队尾加入或者删除数据。 示例 抽象数据接口 trait Deque<T> { /// 新建一个空队列 fn new() -> Self; /// 队列的大小 fn size(

【Rust】归并排序

环境 Time 2022-03-30 Rust 1.59.0 演示 思想:将大列表分割成小列表,在将小列表排序后组合成大列表再次排序。 动画来源:https://visualgo.net/en/sorting?slide=1 示例 递归实现 fn merge_sort(data: &mut [i32]) { if data.len() > 1 { let mid = data.len() / 2;

How to Use MUT-III Record the Drive Data

how to use Mitsubishi MUT III driver recorder function to record the data. https://www.cnautotool.com/blog/2022/03/05/how-to-use-mut-iii-record-the-drive-data/ Preparations: 2021 MUT-3 MUT-III Mitsubishi Diagnostic Software Free Download Recording 1.Selec

【Rust】哈希映射(四)

环境 Time 2022-03-24 Rust 1.59.0 示例 get_mut fn main() { let mut map = HashMap::from([("a", 1), ("b", 2), ("c", 3)]); if let Some(v) = map.get_mut("c") { *v += 3 } println!("{:?}", m

【Rust】字符串(三)

环境 Time 2022-03-24 Rust 1.59.0 示例 remove fn main() { let mut name = String::from("JiangBo"); name.remove(4); println!("{name:?}"); } retain fn main() { let mut name = String::from("JiangBo"); name.retai

【Rust】字符串切片(一)

环境 Time 2022-03-24 Rust 1.59.0 示例 len fn main() { let name = "JiangBo"; println!("{:?}", name.len()); } is_empty fn main() { let name = "JiangBo"; println!("{:?}", name.is_empty()); } is_char_bou

【Rust】动态数组(三)

环境 Time 2022-03-16 Rust 1.59.0 概念 动态数组分配在栈上,长度可以变化。 示例 truncate 从给定的位置进行截取,后面的元素将被丢弃。 fn main() { let mut vec = vec![0, 1, 2, 3, 4]; vec.truncate(2); println!("{vec:?}"); } drain 和 truncate 类似,不过不是

【Rust】数组切片(六)

环境 Time 2022-03-07 Rust 1.59.0 概念 数组切片是引用数组中连续的一部分。 示例 repeat 对元素进行重复。 fn main() { let arr = [0, 1]; let vec = arr.repeat(4); println!("{vec:?}"); //[0, 1, 0, 1, 0, 1, 0, 1] } reverse 反转。 fn main() { let mu

求助 RUST 如何逐字读取 TCPstream

let mut buf:Vec<u8>=Vec::new(); let (mut i, mut buf_size) = (0, 50); for v in (&stream).bytes() { i+=1; if i > buf_size { break; } buf.push(v.unwrap()); } // ... // 后续对stream进行的操作均无效 stream.shutdown(Shutdown::Both).expect("shutdo

【Tokio】echo 服务器

环境 Time 2022-01-13 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://tokio.rs/tokio/tutorial/io 示例 main.rs use tokio::net::TcpListener; #[tokio::main] async fn main() -> tokio::io::Result<()> { let listener = TcpListener::bind("127.0.0.1:6379&qu

rust迭代器

// iter:返回的值是不可变引用,即&T// iter_mut:返回的值是可变引用,即&mut T// into_iter:返回的是T类型的值,会交出所有权// filter过滤(条件),map映射+fold折叠(表达式) https://blog.csdn.net/guiqulaxi920/article/details/78823541

[Write an OS in Rust] Day 2

[Write an OS in Rust] Day 2 Today's task is implement a write function for vga text mode followed by post 目录[Write an OS in Rust] Day 2RustAttributeusemutvolatileOS Rust Attribute #[allow(dead_code)]: The compiler provides a dead_code lint that wi