Rust入门篇:数据类型

文章目录

前言

你好,我是醉墨居士,前面我们学习了如何使用rust在控制台进行输出,接下来我将带给大家一些关于计算机的基础知识,这能够帮助我们更好的理解rust

整数类型

有符号整数:i8,i16,i32,i64,i128

rust 复制代码
let num_int8: i8 = 0; // 8位整数
let num_int16: i16 = 0; // 16位整数
let num_int32: i32 = 0; // 32位整数
let num_int64: i64 = 0; // 64位整数
let num_int128: i128 = 0; // 128位整数
println!("{} {} {} {} {}", num_int8,  num_int16, num_int32, num_int64, num_int128);

无符号整数:u8,u16,u32,u64,u128

rust 复制代码
let num_uint8: u8 = 0; // 8位整数
let num_uint16: u16 = 0; // 16位整数
let num_uint32: u32 = 0; // 32位整数
let num_uint64: u64 = 0; // 64位整数
let num_uint128: u128 = 0; // 128位整数
println!("{} {} {} {} {}", num_uint8,  num_uint16, num_uint32, num_uint64, num_uint128);

浮点数类型

单精度浮点数:f32

rust 复制代码
let num_float32: f32 = 0.0; // 32位浮点数
println!("{}", num_float32);

双精度浮点数:f64

rust 复制代码
let num_float64: f64 = 0.0; // 64位浮点数
println!("{}", num_float64);

布尔类型

表示true、false的bool类型

rust 复制代码
let code: bool = true;
println!("{}", code);

字符类型

表示Unicode字符的char类型

rust 复制代码
let c: char = '醉';
println!("{}", c);

字符串字面量

rust 复制代码
let s: &str = "醉墨居士";
println!("{}", s);

元组类型

组合不同类型值的复合类型,其容器本身不可变!

rust 复制代码
let nums: (i32, char, &str) = (1, '2', "3");
println!("{} {} {}", nums.0, nums.1, nums.2);

数组类型

固定长度的同类型元素的集合

rust 复制代码
let nums: [i32; 3] = [1,2,3];
println!("{} {} {}", nums[0], nums[1], nums[2]);

切片类型

指向数组或者其他数据结构一部分元素的引用

rust 复制代码
let nums: [i32; 5] = [1,2,3,4,5];
let slice: &[i32] = &nums[1..4];
println!("{:?}", slice);

枚举类型

包含一些枚举的"变体"(variants)。每个变体可以携带不同的数据类型或不携带数据

rust 复制代码
#[derive(Debug)]
enum Color {
	Red,
	Green,
	Blue,
}

let color: Color = Color::Red;
println!("{:?}", color);

结构体类型

组合多个不同类型的数据组合到一个单独的结构

rust 复制代码
#[derive(Debug)]
struct Color {
    red: u8,
    green: u8,
    blue: u8,
}

let color: Color = Color { red: 128, green: 0, blue: 255 };
println!("{:?}", color);

指针类型

Rust语言鼓励使用引用而不是原始指针,因为引用在编译时具有更强的类型检查,可以避免许多内存安全问题。只有在特定情况下,比如与C语言交互或进行unsafe操作时,才需要使用原始指针

  1. 引用:表示对某个值的引用,使用&符号来创建。引用在Rust中有不可变和可变两种类型
rust 复制代码
let mut i: i32 = 0;
let i_ref = &i; // 不可变引用
println!("{}", i_ref);

let mut i_ref = &mut i; // 可变引用
println!("{}", i_ref);
  1. 原始指针:
    *const T:不可变的原始指针,类似于C语言中的const T *
rust 复制代码
let i: i32 = 0;

// 创建一个常量指针
let ptr_const: *const i32 = &i;
unsafe {
    // 常量指针指向的地址与解引用
    println!("{:?} {}", ptr_const, *ptr_const);
}

*mut T:可变的原始指针,类似于C语言中的T *

rust 复制代码
let mut i: i32 = 0;

// 创建一个可变指针
let ptr_mut: *mut i32 = &mut i;
unsafe {
    // 可变指针之指向的地址与解引用
    println!("{:?} {}", ptr_mut, *ptr_mut);
}

最后

我们已经介绍了rust中基本的数据类型,希望你有所能收获

相关推荐
故事和你915 分钟前
洛谷-算法1-7-搜索3
数据结构·c++·算法·leetcode·动态规划
网域小星球18 分钟前
C++ 从 0 入门(四)|继承、多态、this 指针、深浅拷贝(C++ 面试终极收官)
开发语言·c++·面试·多态·继承·this指针·深浅拷贝
chipsense22 分钟前
霍尔电流传感器选型方法论再升级:从800V平台到TMR竞争的全场景决策树
算法·决策树·机器学习·闭环霍尔·tmr传感
CoderYanger37 分钟前
14届蓝桥杯省赛Java A 组Q1~Q3
java·开发语言·线性代数·算法·职场和发展·蓝桥杯
钮钴禄·爱因斯晨38 分钟前
他到底喜欢我吗?赛博塔罗Java+前端实现,一键解答!
java·开发语言·前端·javascript·css·html
布说在见40 分钟前
企业级 Java 登录注册系统构建指南(附核心代码与配置)
java·开发语言
草莓熊Lotso41 分钟前
一文读懂 Java 主流编译器:特性、场景与选择指南
java·开发语言·经验分享
疯狂成瘾者1 小时前
Java 常见 Map 对比总结:HashMap、LinkedHashMap、TreeMap、ConcurrentHashMap
java·开发语言·spring
XMYX-01 小时前
16 - Go 协程(goroutine):从基础到实战
开发语言·golang
txxzjmzlh1 小时前
Thread 类的基本用法
java·开发语言