Rust
muyouking11
这个作者很懒,什么都没留下…
展开
-
Rust 将列表内容写出到文件
//将vec里的内容写出到文件fn write_vec_to_file(slice: Vec<String>, filename: &str) -> std::io::Result<()> { let new_content = slice.join("\r\n"); std::fs::write(filename, new_content)?; // println!("{:#?}",new_content); // println!原创 2021-10-12 16:21:05 · 413 阅读 · 0 评论 -
Rust读取文件返回列表
//读取文件以行为元素保存为列表fn read_to_list(path: &str) -> Option<Vec<String>> { let model_filename: String = std::fs::read_to_string(path).unwrap(); let result: Vec<String> = model_filename .lines() .into_iter()原创 2021-10-12 16:20:31 · 479 阅读 · 0 评论 -
rustup源系统环境变更配置
添加环境变量RUSTUP_DIST_SERVER=‘https://mirrors.ustc.edu.cn/rust-static‘RUSTUP_UPDATE_ROOT=‘https://mirrors.ustc.edu.cn/rust-static/rustup‘原创 2021-10-08 14:36:38 · 376 阅读 · 0 评论 -
rust if let和while let
if let 与 while let 可以用来获取返回值是Option 或者Result<>里面的内容if let当只需要判断一个数据时使用if let let bool = true; let mut num = 0; if let true = bool{ num +=1;}}while let当需要判断一系列数据时使用while letlet mut v = vec![1,2,3,4,5,6];while let Some(i) = v.pop(){原创 2021-07-27 07:12:02 · 613 阅读 · 0 评论 -
rust 配置cargo 镜像源
将下面的内容复制保存成config(无后缀) 放在.cargo文件夹下面,或者在项目文件夹与.toml文件同级目录里新建一个.cargo文件夹,放在里面[source.crates-io]registry="https://github.com/rust-lang/crates.io-index"#指定镜像#如:tuna、sjtu、ustc,或者 rustccreplace-with='tuna'#注:以下源配置一个即可,无需全部#中国科学技术大学[source.ustc]regist原创 2021-07-26 11:51:42 · 1537 阅读 · 2 评论 -
rust 运行测试代码时也能显示打印信息
// 注意这个nocapture不能在vscode里起效果,得是在cmd里才行// --color always 是打开彩色开关cargo test -- --capture --color always原创 2021-07-24 10:43:28 · 522 阅读 · 0 评论 -
Rust 生命周期与泛型函数
fn main(){ println!(""); let a = [0,-3,0,15,48]; let e = find_ext(&a); println!("greatest:{},least:{}",e.greatest,e.least);}struct Ext<'a,T>where T:PartialOrd + std::fmt::Display{ greatest: &'a T, least: &'a.原创 2021-06-21 17:25:26 · 268 阅读 · 0 评论 -
Rust 泛型结构体
fn main(){ let mut q1 : Queue<u8> = Queue::new(); q1.push(3); q1.push(4); println!("{:#?}",q1); println!("{}",q1.is_empty());}#[derive(Debug,Clone)]pub struct Queue<T>{ older:Vec<T>, younger: Vec<T>}i原创 2021-06-21 16:53:36 · 726 阅读 · 0 评论 -
Rust 为结构体定义方法与构造函数
fn main() { let mut my_queue = Queue::new(); my_queue.push('A'); my_queue.push('B'); for i in 0..5{ my_queue.push('C'); } println!("{:#?}",my_queue); let mut my_queue_2 = my_queue.clone(); my_queue_2.push('E');原创 2021-06-20 00:22:42 · 2076 阅读 · 0 评论 -
Rust 类元组结构体
fn main(){ let c_color = Color(50,50,50); let mut c_color_1 = c_color.clone(); c_color_1.0 = 20; println!("{:#?}\n{:#?}",c_color,c_color_1);}/// # 类元组结构体/// #[derive(Debug,Clone)]struct Color( u8,u8,u8); // 注意,命名字段结构体与枚举enum 不需原创 2021-06-19 23:39:01 · 648 阅读 · 0 评论 -
Rust 结构体
fn main(){ /// 实例化结构体 let width = 1024; let height = 576; let image = GrayscaleMap{ pixels: vec![0;width * height], size:(width, height) }; println!("{:?}",image.size); let hokey = Boom{ name: "Hokey".原创 2021-06-19 23:19:08 · 205 阅读 · 0 评论 -
Rust Vec<T>
创建空向量let mut numbers : Vec<i32> = vec![];创建给定内容的向量 let mut words = vec!["apple","red","yellow"]; let mut buffer = vec![0i32;1024];//1024个填充0的字节 println!("words:{:?}",words); let my_vec = words.into_iter().collect::<Vec<&str&原创 2021-06-09 16:58:52 · 627 阅读 · 0 评论 -
Rust 练习 泛型 及 match
use std::ops::Add;use std::fmt::{Display,Debug};fn main() { let sum = get_a_add_b(23,42); println!("{}",sum); print("str"); deal(my_enum::A{x:"forver".to_string(),y:"Rust".to_string()}); deal(my_enum::B(234,12,234));}//实现Add的泛型fn g原创 2021-05-26 07:13:06 · 237 阅读 · 0 评论 -
Rust 枚举及其变体的使用
fn main(){println!("===============enum====================="); enum_test();}#[derive(Debug)]enum In_enum{ Boy, Gril}//枚举及其各种变体的使用#[derive(Debug)]enum my_enum<'a>{ A, B{b:String,c:i32},//结构体 C(i32,i32,i32),//元组 D.原创 2021-05-25 13:22:50 · 608 阅读 · 0 评论 -
Rust std::env::args().collect() 获取cmd输入信息
//获取cmd输入信息fn args() -> Result<(),Box<dyn Error>>{ let args:Vec<String> = std::env::args().collect(); if args.len() < 2{ println!("请输入目录名!") } println!("当前输入的目录为:{}",args[1]); Ok(())}...原创 2021-05-25 12:53:27 · 855 阅读 · 0 评论 -
Rust 使用trait 来实现函数重载
fn main(){ let hero = Hero::with("Apple".to_string()); println!("{:#?}",hero); let hero2 = Hero::with(Sex::Gril); println!("{:#?}",hero2); let hero3 = Hero::with(32); println!("{:#?}",hero3); let hero4 = Hero::new(); println原创 2021-05-25 09:12:28 · 1306 阅读 · 0 评论 -
Rust 迭代器适配器
迭代器iter()iter_mut()使用迭代器方法可以产生迭代器,而一旦有了迭代器就可使用Iterator提供的大量适配器方法,这些适配器可以消费一个迭代器并创建一个具备有用行为的新迭代器。适配器map 和 filtermap: 可以为迭代器的每个项都应用一个闭包filter: 可以过滤某些项,使用闭包来决定保留或清除哪些项,只返回闭包中结果为true的项,例如闭包 |x| *x !="" 放进filter()中,则表示只返回非空的字符串进集合中注意map 会将迭代项按值传原创 2021-05-22 00:22:35 · 365 阅读 · 0 评论 -
Rust文件操作相关
通过Path 获取 文件夹路径,文件名,后缀use std::path::Path;use std::ffi::OsStr;fn main() { let path = Path::new("F:/AUPMODEL/1156668"); let parent = path.parent(); assert_eq!(parent,Some(Path::new("F:/AUPMODEL/1156668"))); let file_stem = path.file_stem(原创 2021-05-20 14:20:47 · 2040 阅读 · 0 评论 -
Rust 可变引用与不可变引用
如何在一个作用域里使用同一个可变变量的不可变引用与可变引用fn mut_and_not_mut(){ let mut s = String::from("Hello Wrold!"); let s1 = &s; let s2 = &s; println!("s1:{}\ts2:{}\n",s1,s2); //就算声明的不可变引用没有被调用,只要确保下面声明完可变引用后不会再调用上面的不可变引用即可。不过较少发生这种声明完一个变量又不用的情况。 let原创 2021-05-20 09:22:57 · 1070 阅读 · 0 评论 -
Rust 自定义迭代器 Iterator
struct Counter{ counter : u32,}impl Counter{ fn new() -> Counter{ Counter{counter : 0} }}impl Iterator for Counter{ type Item = u32; fn next(&mut self) -> Option<Self::Item>{ if self.counter < 5原创 2021-04-27 17:49:20 · 385 阅读 · 0 评论 -
Rust filter过滤迭代项
#[derive(PartialEq,Debug)]struct Shoe{ size: u8, style: String,}fn shoes_in_my_size(shoes :Vec<Shoe>,shoes_size : u8)-> Vec<Shoe>{ shoes.into_iter().filter(|x| x.size == shoes_size).collect()}fn fileter_by_size(){ let原创 2021-04-27 14:20:50 · 1942 阅读 · 0 评论 -
Rust 学习笔记
字符串篇字符串切片let s = "Hello World";let a = &s[1..4];println!("{}",a);输出 ell遍历字符串fn each_str(s: &str){ for i in s.chars(){ //do something print!("{}",i);}}原创 2021-04-20 16:12:34 · 323 阅读 · 0 评论 -
Rust HashMap 的使用
use std::collections::HashMap;type Map = HashMap<String,Vec<String>>;fn show(table: &Map){ for (artist,works) in table{ println!("the artis {}",artist); for work in works{ println!(" {}",work); }原创 2021-02-28 23:37:45 · 282 阅读 · 0 评论 -
runst 闭包
#![allow(dead_code)]fn func1(i:i32) -> i32{ i+1} //正常的函数fn main(){ let a = 3; let func2=|i:i32| ->i32{ i+2}; //闭包1,有参,有返回值 let func3 = ||1; //闭包2,无参,无返回值 let func4 = |i:i32| i*3; //闭包3,有参原创 2021-02-24 13:41:55 · 135 阅读 · 0 评论 -
Rust 为自定义的结构体实现Debug与Display
use std::fmt;#[derive(Debug)]struct Point2D{ x:f64, y:f64,}impl fmt::Display for Point2D{ fn fmt(&self,f: &mut fmt::Formatter) -> fmt::Result{ write!(f,"x:{}, y:{}",self.x,self.y) }}fn main(){ let my_Point_2D =原创 2021-02-05 16:54:51 · 1792 阅读 · 0 评论 -
Rust 数组
定义:数组的大小是固定的,但其中的元素是可以被更改的。格式1: let array_name: [T;size] //不可修改数组元素的定义方式格式2: let mut array_name[T;size] //使用let mut 定义可以修改元素值的数组获取数组元素:方法一:通过索引值获取let mut array_name:[u8;3] = [2,3,4];printlln!("索引为0的元素值为:{}",array_name[0]);方法二:通过循环表达式获取里面的元素for i原创 2020-12-31 10:33:48 · 1566 阅读 · 0 评论