rust基础(上)

发布时间 2023-04-09 21:20:13作者: jinganglang567

定义变量

fn main(){
	let number=3;
	let food="事物";
	let check=true;
	println!("the number is:{}",number);
	println!("the food is:{}",food);
	println!("the check is :{}",check);
	//设定整形类型
	let number2:i32=-300;//i32代表有符号32位
	let number3:u32=300;//无符号
	println!("number2 is:{}",number2);
	println!("number3 is :{}",number3);
	//设定整形类型
	let number4:f32=1000.34;
	println!("number4 is {}",number4);
	let number5:f64=100_00_00.567_895;//下划线数字阅读性好
	println!("number5 is {}",number5);
	//字符类型
	let c='R';
	println!("{}",c);
	//初始化变量
	let price=1;//let 修饰的变量无法修改
	let mut p=1;//加入mut修饰后可以修改
	//rust可以重复定义同名变量,之前的变量值会被隐藏
	let manve="金刚狼";
	println!("{}",manve);
	let manve="钢铁侠";
	println!("{}",manve);
	//const修饰当常量不可以重名定义
	
	
	
	
	
}

字符串

//字符串
//rust中的字符串有两种,一种是核心内置数据类型&str,也叫字符串字面量,另一种是字符串对象
//字符串字面量是字符串对象的切片
//字符串字面量在程序编译时就知道值的字符串类型
//字符串字面量是静态,从创建一直保存到程序结束
fn main(){
	let lesson:&str="字符串尝试";
	println!("{}",lesson);
	//新建字符串对象,new 和 from
	let s1=String::new();//new是创建一个空字符串
	println!("{},{}",s1,s1.len());
	let mut s2=String::from("welcome to rust");
	println!("{},{}",s2,s2.len());
	//字符串常见操作
	s2.push_str("谢谢你的到来");
	println!("{}",s2);
	s2.push('p');
	println!("{}",s2);
	//字符串替换
	let s3=String::from("www.www.wwww.ww.");
	let res=s3.replace("ww.","nn.");
	println!("{}",res);
	//字符串字面量转化为字符串对象
	let s4="this is the world".to_string();
	println!("{}",s4);
	//字符串对象转化为字面量
	let s5:&str=s4.as_str();
	println!("{}",s5);
	//字符串去除,制表符,回车等空白符
	let s6="\twlecome is ht \t \r\n 王的发";
	println!("{}",s6.len());
	println!("{}",s6.trim().len());
	println!("{}",s6.trim());
	//字符串分割
	let s7="金刚狼,忍者神龟,金刚,钢铁侠";
	for item in s7.split(','){
		println!("{}",item);
	}
	//字符串分割为单个字符
	let s8="dadakjkdaksdjak";
	for item in s8.chars(){
		println!("{}",item);
	}
	//+必须左边参数是字符串对象,右边是字符串常量
	println!("{}",s7.to_string()+s8);
	
	
	
}

函数

fn test(price:&mut i32){
	*price=*price*2;
	println!("{}",*price);
}//引用传递
fn test2(mut price:i32){
	price=price*2;
	println!("{}",price);
}
fn main(){
	let mut price=10;
	test2(price);
	println!("{}",price);
	test(&mut price);
	println!("{}",price);
}

常见语句结构

//rust中常见的语句结构
//rust中的条件表达式相对于c没有使用()
fn main(){
	let a=1;
	let b=2;
	if a>b{
		println!("a>b");
	}else{
		println!("a<b");
	}
	//match语句俄罗斯switch
	//=>直接返回,相等于return
	let code="10086";
	let choose=match code{
		"10086"=>"移动",
		"10010"=>"联通",
		_=>"你买到假号"
	};
	println!("{}",choose);
	//循环语句
	//区间左闭右开
	for num in 1..5{
		println!("{}",num);
	}
	//区间闭区间
	for num in 1..=5{
		println!("{}",num);
	}
	//迭代,迭代并不会修改列表内的元素
	let testlist=vec!["this","is","my","world"];
	for test in testlist.iter(){
		match test{
			//因为字符串默认是字符字面量,所以加&转化
			&"this"=>println!("hhhhh"),
			_=>println!("a"),
		}
	}
	let testlist2=vec!["this","is","my","world"];
	/*for test in testlist2.into_iter(){
		match test{
			"this"=>println!("hhhhh"),
			_=>println!("a"),
		}
	}*/
	/*for test in testlist2{
		println!("{}",test);//输出失败,into_iter的迭代方法会将原来的元素迭代后删除
	}*/
	//修改迭代,类似指针
	let mut testlist3=vec!["it","me","world"];
	for test in testlist3.iter_mut(){
		*test=match test{
			&mut"me"=>"篮网",
			_=>*test,
		}
		
	}
	println!("{:?}",testlist3);
	//loop循环
	let mut n=1;
	loop{
		if n>15{break;}
		println!("{}",n);
		n=n*3;
	}
}