码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • rust 基础数据类型


    默认类型

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

    fn main() {
        let x = 5;
    }
    
    
    • 1
    • 2
    • 3
    • 4

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

    fn main() {
        let x = "5".parse().expect("fail");
        let sum = x + 10;
    }
    
    • 1
    • 2
    • 3
    • 4

    整数类型

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

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

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

    字符类型

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

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

    元组类型

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

    fn main() {
        let tup: (i32, f64, u32) = (1, 2.0, 3);
    }
    
    • 1
    • 2
    • 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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

    数组

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

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

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

    显示地声明数组类型:

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

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

    fn main() {
        let a = ["prefix_"; 3];
        println!("{}", a[0])
    }
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    办公软件 Excel考试面试题库和答案
    计算机毕业设计 基于协同过滤算法的白酒销售系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试
    数据分析与可视化 Numpy数组
    AutoGPT目前只是成功学大师GPT版
    html2canvas + JsPDF.js 导出pdf分页时的问题
    【Docker 内核详解】namespace 资源隔离(四):Mount namespace & Network namespace
    C刊级 | Matlab实现GWO-BiTCN-BiGRU-Attention灰狼算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测
    如何基于先进视频技术,构建互联网视频监控安全管理平台解决方案
    在C#中使用 NLog 库进行日志记录
    分享一个超好看回忆相册(代码自取)
  • 原文地址:https://blog.csdn.net/f1520107395/article/details/134231094
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号