rust 是强类型语言,所有变量、常量都必须有明确的数据类型;很多情况下,省略类型声明,编译器可自动推导,但不是所有情况下都会成功。

rust 有整型、浮点型、布尔型、字符型、数组、元组、枚举、结构体等数据结构,其中:

  • 整型有:i8、i16、i32、i64、isize、u8、u16、u32、u64、usize 等

    • 其中 isize 在不同硬件架构上编译的结果不同,如在 x86-64 上为 i64,在x86-32 上则为 i32
    • 所有硬件平台的自动推导默认类型均为 i32
    • 字面值之间可以添加任意数量的 '_' 提高可读性,如:123_456_789 与 123456789 等价
    • 0xff、0o77、0b11_00 分别是十六进制、八进制、二进制表示法,另 b'A' 表示单字节字符 'A',仅支持 u8 类型
  • 浮点型有:f32、f64,自动推导默认类型 f64

  

一、rust 中的变量值默认是不允许改变的,即不可二次斌值,如下代码无法通过编译,需要在变量前添加 mut 标识

fn main() {
let zVar: i64 = 0; // let mut zVar: i64 = 0;
zVar = 1;
println!("{}", zVar);
}

二、rust 中可以连续定义同名变量,新的变量将覆盖旧的变量,且前后的变量类型可以不一致:即 shadowing 特性。

fn main() {
    let zvar: i32 = 0;
    let zvar: i32 = zvar + 1;
    let zvar: i32 = zvar * 2;
    let zvar: &str = "Hello World!";
    let zvar = zvar.len();     println!("{}", zvar);
}

三、rust 中常量定义必须显示指明数据类型,同一作用域内不可重名,局部定义覆盖全局定义。

const GLOB_NUM: f64 = 0.0;    // 右值必须符合左值声明的数据类型,如指定 f64,但右值赋值为 1,则无法通过编译。

fn main() {
let zvar: i32 = 0;
let zvar: i32 = zvar + 1;
let zvar: i32 = zvar * 2;
let zvar: &str = "Hello World!";
let zvar = zvar.len(); const GLOB_NUM: f64 = 1.0; println!("{} {}", zvar, GLOB_NUM);
}

四、结构体

fn main() {
#[derive(Debug)]
struct _T {
a: i32,
b: u64,
} let mut _test = _T {a: , b: }; // 必须斌值,否则后续无法使用 _test.a = ;
_test.b = ; println!("{} {}\n{:?}", _test.a, _test.b, _test);
}

注:

  • 结构体类型定义末尾不加分号 ';'
  • 结构体实例定义所有成员变量必须全部初始化
  • #[derive(Debug)] 用于启用调试打印格式
  • 允许在函数体内定义局部结构体

五、枚举

#[derive(Debug)]
enum _T {
_A(i32),
_B(String),
_C(i64, u32),
_D,
_E{x: i32, y: i32},
} impl _T {
fn print_self(&self) -> i32 {
println!("{:?}", self); }
} fn main() {
let _var = _T::_D;
let _var0 = _T::_E{x: , y:}; _var.print_self();
_var0.print_self();
}
  • rust 的枚举成员可以进一步梆定任意类型数据结构
  • 所有成员属于同一数据类型,方法共享

____

Rust <1>:数据类型、变量、可变性、常量、隐藏的更多相关文章

  1. Java 数据类型 & 变量与常量 & 注释

    一.数据类型 1.数据类型分类 Java 的数据类型分为两大类: 基本数据类型:整数.浮点数.字符型.布尔型 引用数据类型(对象类型):类.数组,字符串.接口等. 2.基本数据类型 四类八种基本数据类 ...

  2. JAVA数据类型,变量,转换,常量,运算符

    java数据类型: Java基本类型共有八种,基本类型可以分为三类: 1.字符类型char,用单引号赋值 2.布尔类型boolean 3.数值类型byte.short.int.long.float.d ...

  3. C语言基础学习基本数据类型-变量和常量

    变量和常量 什么是变量和常量?有些数据在程序运行前就预先设定,并在运行过程中不发生变化,称之为常量:有些数据在程序运行中可能发生变化或被赋值,称之为变量. 使用变量前必须先声明一个变量.变量定义的语法 ...

  4. Python--前端基础之JavaScript(JS的引入方式,JS的变量、常量和标识符,JS的数据类型,运算符,流程控制,JavaScript的对象)

    JavaScript介绍 JavaScript是运行在浏览器端的脚步语言,JavaScript主要解决的是前端与用户交互的问题,包括使用交互与数据交互. JavaScript是浏览器解释执行的,前端脚 ...

  5. Java程序,基本数据类型、、数据类型转换、变量和常量、常用运算符

    一.基本数据类型 整数类型:byte.short. int(常用).long(较常用)     定义某个变量          int  a=10: 浮点类型(小数):float.double(常用) ...

  6. javascript 概述及基础知识点(变量,常量,运算符,数据类型)

    JavaScript概述 1.1 什么是JavaScript: javaScript(简称js),是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言.同时也是一种广泛用于客户端Web开发的脚本语 ...

  7. java学习笔记----数据类型,变量,常量

    一.数据类型 1.基本类型(8种,又称内置数据类型).6种数字类型(byte,short,int,long,float,double),一种字符型(char),一种布尔类型(boolean). byt ...

  8. JS基础-数据类型-运算符和表达式-变量和常量

    1.js的基础语法2.js调试 1.F12调出控制台,查看提示错误及其位置. 2.出错时只影响当前代码块,不会影响其他代码块,后续代码块继续执行.3.语法规范 1.js语句:可执行的最小单元 必须以 ...

  9. java===java基础学习(1)---数据类型,运算,变量,常量

    今天起开始了java的学习之路,主要学习了数据类型和运算,变量,常量.基本和python有很多相通的地方,所以看起来很容易上手.下面是学习笔记! package testbotoo; public c ...

  10. Go语言基础之1--标识符、关键字、变量和常量、数据类型、Go的基本程序结构、Golang的特性

    一.前言 当我们项目较为简单时,我们在src目录下新建一个该项目目录,里面存放源码文件即可,见下图: 当我们一个项目较为复杂时,我们可以在src目录下新建一个该项目目录,在针对该项目不同模块创建不同目 ...

随机推荐

  1. ssd存储的SLC、MLC、TLC闪存芯片颗粒有什么区别?

    SLC = Single-Level Cell ,即1bit/cell,速度快寿命长,价格贵(约MLC 3倍以上的价格),约10万次擦写寿命: MLC = Multi-Level Cell,即2bit ...

  2. CSL 的密码(后缀数组)

    CSL 的密码 题目传送门 解题思路 后缀数组.对于每一个后缀\(k\)都有\(n - k + 1\)个前缀,把所有不和前一个(排序后的)公共且长度大于\(m\)的前缀个数加起来. 代码如下 #inc ...

  3. code for QTP and ALM

    '==========================================================================' Name: connectALM' Summa ...

  4. matplotlib系列——条形图

    import matplotlib.pyplot as plt import numpy as np import matplotlib x = ["战狼2","激情8& ...

  5. 好用的打包工具webpack

    <什么是webpack> webpack是一个模块打包器,任何静态资源(js.css.图片等)都可以视作模块,然后模块之间也可以相互依赖,通过webpack对模块进行处理后,可以打包成我们 ...

  6. WPFの触发器详解

    例子1 简单触发器Triggers——满足简答的条件,触发 <Window x:Class="Styles.SimpleTriggers" xmlns="http: ...

  7. 将循环结果通过管道 传递给其他命令处理(done |)

  8. C#链式编程

    一.基本链式格式 class Program { static void Main(string[] args) { Console.WriteLine("Hello World!" ...

  9. 力扣——3sum closest(最接近的三数之和)python 实现

    题目描述: 中文: 给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一 ...

  10. 启动数据库报:ORA-03113

    1启动数据库报:ORA-03113 2.查看oracle运行日志 tail  -50 //home/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.l ...