乱读天书, 不求甚解
周祎骏的个人云笔记
Toggle navigation
乱读天书, 不求甚解
主页
Linux:系统配置
Linux:用户管理
Linux:优化排错
Linux:进程调度
Linux:文件系统
Linux:网络
Linux:系统服务
Linux:安全
Linux:内核
容器:Docker
容器:containerd
容器编排:Kubernetes
IAC:Terraform
大数据:Hadoop
大数据:Zookeeper
大数据:Hbase
消息队列:rsyslog
消息队列:kafka
数据库:MySQL
数据库:MongoDB
搜索引擎:Elasticsearch
时序数据库:OpenTSDB
网站服务:Nginx
编程:Bash
编程:Perl
编程:Python
编程:C
编程:JAVA
编程:Rust
版本控制:gitlab
知识管理:docusaurus
常用小工具
关于我
标签
Rust 01.00 数据类型
2023-02-05 10:10:59
32
0
0
admin
> 数据类型 # 各种变量类型 ``` 变量 let x:T = xx; let mut x:T = xx; 常量 const x:T = xx; //不可被修改,会被编译进可执行文件,全局可访问。 静态变量 static x:T = xx; static mut x:T = xx; //会被编译进可执行文件,全局可访问,会有限制。 ``` # 各种数据类型 ## int |长度|有符号|无符号| |:-:|:-:|:-:| |8-bit|i8|u8| |16-bit|i16|u16| |32-bit|i32|u32| |64-bit|i64|u64| |arch|isize|usize| > isize 和 usize 长度取决于系统,64位就是64-bit 32位就是32-bit > 如果是debug 模式,溢出会触发panic,如果是release 模式,为了代码效率,溢出不会触发panic,而是又变成最小值 ## float f32 和 f64,默认f64 ## char 占4个字节,必须用单引号赋值 ``` let a = 'a'; ``` ## 元组 tuple 可以由多个数据类型组成,固定长度,声明结束后不能再增减元素 ```rust let tup_a: (i32,f64,char) = (1,1.1,'a'); //通过拆解来访问元组的值 let (x,y,z) = tup_a; println!("x = {}",x); //通过下标来访问元组的值 println!("z = {}",tup_a.2); ``` ## 数组 array 固定长度,每一个元素必须是相同类型 访问超出长度的元素会panic ```rust let a: [i32;5] = [1,2,3,4,5]; println!("First one is {}",a[0]); for i in a[0..=1].into_iter() //遍历0到1 {println!("It is {}",i);} let b = [3,5]; //这样每个元素都是3 ``` ## queue ```rust use std::collections::VecDeque; fn main() { let mut q = VecDeque::new(); q.push_front(1); //在前面插入 q.push_back(2); //在后面插入 q.push_front(3); //在前面插入 println!("{:?}=>{}",q,q.len()); let aa = q[1]; println!("{}",aa); let a = q.pop_back().unwrap();//拿取最后一个元素 let b = q.pop_front().unwrap();//拿取第一个元素 println!("{},{}",a,b); println!("{:?}",q); } ``` # 变量,常量 * 变量分为可变变量和不可变变量 ``` let a = 1; // 不可变变量 let mut b = 1; // 可变变量 ``` * RUST 是静态类型语言,所有的变量都必须有类型;编译器会自动推导出类型;当不能推导的时候,需要定义否则报错。 ``` let a:i8 = 1; // 8位长度的有符号int ``` * 常量永远需要标注类型,约定俗成用全大写字母和下划线命名
上一篇:
Rust 00.01 所有权概念
下一篇:
Rust 01.01 结构体
文档导航