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中基本的数据类型,希望你有所能收获

相关推荐
Highcharts.js5 小时前
教程:基于 React + Highcharts 构建一个单页应用程序、按需数据拉取与图表渲染
开发语言·前端·数据结构·react.js·前端框架·highcharts·页面应用
头发还在的女程序员6 小时前
医院陪诊管理系统怎么选择?——2026 年选型避坑与架构参考
java·开发语言·陪诊系统·陪诊app·医院陪诊陪护
拳里剑气8 小时前
C++算法:BFS解决FloodFill算法
c++·算法·bfs·宽度优先
爱写代码的小朋友8 小时前
从零开始学 Win32 API:C++ 窗口编程实战(VS Code + MinGW-w64 命令行详解)
开发语言·c++
果汁华8 小时前
Function Calling 与 Python 实战完整指南
开发语言·网络·python
小小晓.9 小时前
C++:语句和作用域
开发语言·c++
逻极9 小时前
Rust 从入门到精通:内存安全与高性能系统编程实战
rust·系统编程·性能·内存安全
wanderist.9 小时前
Lambda表达式在算法竞赛中的应用
java·开发语言·算法
稚南城才子,乌衣巷风流10 小时前
支配树(Dominator Tree)详解:概念、算法与应用
算法