一、变量与常量 fnmain(){ constMAX_POINTS:u32=100; println!("常量max_points:{}",MAX_POINTS); letx=5; println!("xis{}",x); //shadowing影藏x的不可变特性变成一个变量 letx=x+1; letx=x2; println!("xis{}",x); letspaces=""; letspaces=spaces.len(); println!("{}",spaces) } 二、数据类型标量类型 fnmain(){ letguess:u32="42".parse().ex...

  dBFTbkVLMBge   2023年11月02日   53   0   0 Rust

一、所有权的定义 降低编译速度,检查规则 二、所有权的规则内存与分配 fnmain(){ letmuts=String::from("hello"); s.push_str(",World"); println!("{}",s) } 类似于Java中的StringBuilder和StringBuffer fnmain(){ lets1=String::from("Hello"); lets2=s1.clone(); println!("{}{}",s1,s2); } 数据完成了复制 三、所有权与函数 fnmain(){ let...

  dBFTbkVLMBge   2023年11月02日   27   0   0 所有权

一、Struct定义和实例化 structUser{ username:String, email:String, sign_in_count:u64, active:bool, } fnmain(){ letmutuser=User{ username:String::from("beijing"), email:String::from("xxx@qq.com"), sign_in_count:888, active:false, }; user.email=String::from("abc@qq.com"); println!("{}",user.email) } ...

  dBFTbkVLMBge   2023年11月02日   42   0   0 struct

一、定义枚举 定义枚举的方法 enumMessage{ Quit, Move{x:i32,y:i32}, Write(String), ChangeColor(i32,i32,i32), } implMessage{ fncall(&self){ } } fnmain(){ letq=Message::Quit; letm=Message::Move{x:12,y:24}; letw=Message::Write(String::from("Hello")); letc=Message::ChangeColor(0,255,255); m.call() } ...

  dBFTbkVLMBge   2023年11月02日   30   0   0 Rust

一、rust代码组织 新建一个lib.rs modfront_of_house{ modhosting{ fnadd_to_waitlist(){} fnseat_at_table(){} } modserving{ fntake_order(){} fnserve_order(){} fntake_payment(){} } } 二、路径 modfront_of_house{ pubmodhosting{ pubfnadd_to_waitlist(){} } } pubfneat_at_restaurant(){ //绝对路径调用方法 //crate::fron...

  dBFTbkVLMBge   2023年11月02日   29   0   0 Rust

一、Vector  fnmain(){ //letmutv=Vec::new(); letmutv=vec![1,2,3]; v.push(4); letthird:&i32=&v[2]; println!("thethirdvalueis{}",third) } 因为first是不可变的,所以就报错了;因为vector数据在内存中是连续的 fnmain(){ //letmutv=Vec::new(); letmutv=vec![1,2,3]; v.push(4); letthird:&i32=&v[2]; println...

  dBFTbkVLMBge   2023年11月02日   34   0   0 vector集合

一、Panic  fnmain(){ panic!("crashandburn"); } setRUST_BACKTRACE=1,输出异常堆栈 二、Result枚举和可恢复的错误 usestd::fs::File; fnmain(){ letf=File::open("hello.txt"); letf=matchf{ Ok(file)=>file, Err(error)=>{ panic!("Erroropenfile{:?}",error); } }; } fnmain(){ letf=File::open("hello.txt")...

  dBFTbkVLMBge   2023年11月02日   15   0   0 panic

一、提取函数消除重复 //定义max函数 fngetMax(list:&[i32])->i32{ letmutlargest=list[0]; for&iteminlist{//模式匹配item就是i32类型了 ifitem>largest{ largest=item; } } //或者使用解引用也行获取值 foriteminlist{ ifitem>largest{ largest=item; } } returnlargest; } fnmain(){ letold_list=vec![10,20,30,40,50]; letnew_list=ve...

  dBFTbkVLMBge   2023年11月02日   49   0   0 生命周期

一、编写测试 cargo创建测试项目 使用Clion打开工程,lib.rs代码如下 然后运行这个测试看看效果 增加一个单测 [test] fnnew_test(){ panic!("maketestfail"); } 二、断言 [derive(Debug)] pubstructRectangle{ length:u32, width:u32, } implRectangle{ pubfncan_hold(&self,other:&Rectangle)->bool{ self.length>other.length&&self...

  dBFTbkVLMBge   2023年11月02日   35   0   0 单元测试

一、新建cargo工程 usestd::env; fnmain(){ letargs:Vec<String>=env::args().collect(); println!("{:?}",args); } clion运行rust程序,配置参数1234abcd 看下执行结果 继续增加代码 usestd::env; fnmain(){ letargs:Vec<String>=env::args().collect(); println!("{:?}",args); letquery=&args[1]; letfilename=&arg...

  dBFTbkVLMBge   2023年11月02日   63   0   0 命令行

一、闭包入门 usestd::thread; usestd::time::Duration; fnmain(){ letspecified_value=10; letrandom_number=7; generate_workout(specified_value,random_number); } fngenerate_workout(intensity:u32,random_number:u32){ //定义一个函数闭包 letexpensive_closure=|num|{ println!("calculateslowly"); thread::sleep(Duration...

  dBFTbkVLMBge   2023年11月02日   28   0   0 泛型类型推断

一、通过releaseprofile来自定义构建 默认是dev 指定发布release构建 改成opt-level=1后,再执行cargobuild 从之前的unoptimized变成了optimized 二、发布crate到crates.io cargodoc --open 三、pubuse lib.rs代码如下 pubuseself::kinds::PrimaryColor; pubuseself::kinds::SecondaryColor; pubuseself::utils::mix; pubmodkinds{ //primarycolor...

  dBFTbkVLMBge   2023年11月02日   26   0   0 发布

一、基本概念 二、使用Box指向Heap上的数据 使用Box<T>在heap上存储数据 fnmain(){ letb=Box::new(5); println!("b={}",b) } 在作用域之外,会释放在stack上的指针和heap上的数据 usecrate::List::{Cons,Nil}; enumList{ Cons(i32,Box<List>), Nil, } fnmain(){ //创建一个链表使用Box智能指针 letlist=Cons(1, Box::new(Cons(2, Box::new(Cons(3, Box:...

  dBFTbkVLMBge   2023年11月02日   38   0   0 智能指针

一、面向对象语言特性 //平均值 pubstructAveragedCollection{ list:Vec<i32>,//私有字段 average:f64//私有字段 } implAveragedCollection{ //add方法 pubfnadd(&mutself,value:i32){ self.list.push(value); self.update_average(); } //remove方法 pubfnremove(&mutself)->Option<i32>{ letresult=self.list.pop(); m...

  dBFTbkVLMBge   2023年11月02日   16   0   0 语言特性面向对象

一、模式基本概念 二、模式可辩驳性 三、模式语法 fnmain(){ letx=Some(5); lety=10; matchx{ Some(50)=>println!("Got50"), //匹配到5所以在这个作用域y=5 Some(y)=>println!("Matched,y={:?}",y), _=>println!("Defaultcase,x={:?}",x), } println!("attheend:x={:?},y={:?}",x,y); } 上面匹配的是[1,5] 左闭右闭区间 ...

  dBFTbkVLMBge   2023年11月02日   31   0   0 模式匹配

一、UnsafeRust 代码示例 fnmain(){ letmutnum=5; letr1=&numasconsti32; letr2=&mutnumasmuti32; //使用unsafe构造一个不安全的代码块 unsafe{ println!("r1:{}",r1); println!("r2:{}",r2); } //内存地址 letaddress=0x012345usize; letr=addressasconsti32; unsafe{ println!("r:{}",r); } } unsafefndangerous(){} fnmain(){...

  dBFTbkVLMBge   2023年11月02日   32   0   0 Rust

一、web服务器 usestd::net::TcpListener; fnmain(){ //监听某个ip和端口 letlistener=TcpListener::bind("127.0.0.1:8888").unwrap(); forstreaminlistener.incoming(){ letstrData=stream.unwrap(); println!("Connectionestablished"); } } 打开浏览器 http://127.0.0.1:8888/ 然后看下如何读取请求传过来的参数   usestd::io::Read; uses...

  dBFTbkVLMBge   2023年11月02日   21   0   0 web服务器

并发,是指在宏观意义上同一时间处理多个任务。并发的方式一般包含为三种:多进程、多线程以及最近几年刚刚火起来的协程。 一、多进程并发 创建两个项目 子进程subProgress和主进程mainProgress 子进程代码如下 usestd::thread::sleep; usestd::time::Duration; fnmain(){ println!("Hello,world!"); sleep(Duration::from_secs(5)); println!("Bye,world!"); } 主进程代码如下 usestd::process::Command; fnma...

  dBFTbkVLMBge   2023年11月02日   21   0   0 并发编程多进程

000Qtcreator的安装 去官网https://download.qt.io/archive/qt/下载安装包 安装后的界面如下 001创建工程 配置工程参数如下 生成demo成功 点击绿色箭头run执行这个程序 为了项目支持中文字符,需要改下编码配置 工具-->选项 修改默认编码为System 关闭qt后再重新打开,然后重新点击绿色箭头执行就可以支持中文字符了 002helloworld程序 003注释语句 004关键字 005数据类型常量和变量 006整型常量 007整型变量的定义 008整型变量的初始化 009变量的声明 变量...

  dBFTbkVLMBge   2023年11月02日   19   0   0 Qt

034运算符 048控制语句 056数组 057一维数值数组的初始化 058二维数值数组 059一维字符数组

  dBFTbkVLMBge   2023年11月02日   26   0   0 运算符
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~