当前位置: 首页 > news >正文

rust 基础数据类型

默认类型

大部分情况下,rust 可以基于上下文自动推导出变量的类型。下面代码中,变量 x 没有显式,rust 默认是 i32 类型。

fn main() {let x = 5;
}

但也有一些例外情况,比如,字符串类型的转换中变量 x 的类型,rust 就自动推导不出来。这种情况就需要显示的声明变量的类型。

fn main() {let x = "5".parse().expect("fail");let sum = x + 10;
}

整数类型

整数的类型声明有别于其他语言,有符号整数类型名称以 u 开头,无符号以 i 开头。usize 和 isize 是两种特殊的整数类型,它们的长度取决于系统是 32位还是64位。

长度有符号无符号
8bitu8i8
16bitu16i16
32bitu32i32
64bitu64i64
archusizeisize

对于位数为 n 的有符号整形,它可以存储 − 2 ( n − 1 ) -2^{(n-1)} 2(n1) 2 ( n − 1 ) − 1 2^{(n-1)}-1 2(n1)1范围内的所有整数,无符号可以存储 0 到 2 n − 1 2^{n}-1 2n1 范围内的所有整数。

字符类型

在Rust中,char类型被用于描述语言中最基础的单个字符。需要区分的是,char类型使用单引号指定,而不同于字符串使用双引号指定。

Rust中的char类型占4字节,是一个Unicode标量值,这也意味着它可以表示比ASCII多得多的字符内容。拼音字母、中文、日文、韩文、零长度空白字符,甚至是emoji表情都可以作为一个有效的char类型值。

元组类型

元组将不同类型的多个值组合进一个复合类型中,在声明的时候会确定长度,无法在声明后增加或减少其中的元素数量。

fn main() {let tup: (i32, f64, u32) = (1, 2.0, 3);
}

下面通过 let 的方式来解析元组,但这种方式并不方便,我们还可以通过索引来进行访问。

fn main() {let tup: (i32, f64, u32) = (1, 2.0, 3);let (x, y, z) = tup;println!("x:{}, y:{}, z:{}", x, y, z);
}

通过索引的方式来进行访问:

fn main() {let tup: (i32, f64, u32) = (1, 2.0, 3);println!("x:{}, y:{}, z:{}", tup.0, tup.1, tup.2);
}

数组

与元组不同,数组中的每一个元素都必须是相同的类型。Rust中的数组拥有固定的长度,一旦声明就再也不能随意更改大小。

下面通过一对方括号来声明数组,如果要显示的指定数组类型,类型声明也需要一对方括号,括号中写上数组元素的类型,一个分号,以及数组的长度。

fn main() {let a = [1, 2, 3];
}

显示地声明数组类型:

fn main() {let a: [i32; 3] = [1, 2, 3];
}

Rust 还提供一种初始化数组的语法,前提是你想创建一个包含相同元素,指定长度的数组,你可以在方括号中指定元素的值和长度。下面的例子就创建了一个 [“prefix_”, “prefix_”, “prefix_”] 数组。

fn main() {let a = ["prefix_"; 3];println!("{}", a[0])
}
http://www.lryc.cn/news/221331.html

相关文章:

  • ELK极简上手
  • 在 JavaScript 中,变量的作用域是如何确定的?
  • 常见面试题-TCP三次握手四次挥手
  • 前端框架Vue学习 ——(六)Vue组件库Element
  • 第六章:Property-based Testing and Test Oracles
  • react生命周期函数
  • QSqlDatabase使用Sqlite
  • 宝马——使用人工智能制造和驾驶汽车
  • java入门,Map<? extends String, ?>
  • Spring Boot 统一处理功能
  • 香港金融科技周VERTU CSO Sophie谈Web3.0的下一个风口 手机虚拟货币移动支付
  • 分布式单元化
  • wvp-gb28181-pro接入海康摄像头
  • 近视眼选择什么台灯好?专家推荐的防近视台灯
  • 数据标注工具【LabelImg】安装使用 用VOC制作自己的数据集
  • Zeus IoT : 基于 SpringBoot 的分布式开源物联网大数据平台
  • 面试—如何介绍项目中的多级缓存?
  • PyTorch入门学习(十七):完整的模型训练套路
  • 《 Hello 算法 》 - 免费开源的数据结构与算法入门教程电子书,包含大量动画、图解,通俗易懂
  • 数据库之事务
  • NOIP2023模拟12联测33 B. 游戏
  • 代码随想录打卡第六十三天|84.柱状图中最大的矩形
  • python tempfile 模块使用
  • 【软件测试】接口测试实战详解
  • 轻量封装WebGPU渲染系统示例<20>- 美化一下元胞自动机之生命游戏(源码)
  • Nodejs的安装以及配置(node-v12.16.1-x64.msi)
  • 03【保姆级】-GO语言变量和数据类型和相互转换
  • mermaid学习第一天/更改主题颜色和边框颜色/《需求解释流程图》
  • SAP MASS增加PR字段-删除标识
  • 【手把手教你】训练YOLOv8分割模型