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. 如何理解c++迭代器(上)

    1.如何理解迭代器?迭代器不是指针,也似乎不是string这种类型 参考:迭代器与指针的区别是? C++map迭代器的++操作是如何实现的?讨论.iterator提供了遍历STL容器里元素的方式,no ...

  2. SimpleDateFormat 格式化时间少了12个小时

    SimpleDateFormat 格式化时间少了12个小时 标签(空格分隔): java SimpleDateFormat H:一天中的小时数:0-23 h: am/pm 小时数: 1-12 publ ...

  3. 图推荐-基于随机游走的personrank算法

    转自http://blog.csdn.net/sinat_33741547/article/details/53002524 一 基本概念 基于图的模型是推荐系统中相当重要的一种方法,以下内容的基本思 ...

  4. DNS解析全过程详解

    1.Chrome浏览器 会首先搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存),看自身的缓存中是否有www.linux178.com 对应的条目,而且没有过期,如 ...

  5. Goals ? Ideals ?

    Why is it important to set goals ? Because goal can help you do , be , and experience anything you w ...

  6. Asp.net core 使用log4net作为日志组件,记录日志到本地。

    原文:Asp.net core 使用log4net作为日志组件,记录日志到本地. GitHub demo :https://github.com/zhanglilong23/Asp.NetCore.D ...

  7. webpack从入门到精通(一)

    1.webpack的使用背景: 目前国内前端开发都是基于模块化的 2.webpack的作用有哪些: 3.webpack四大核心理念: entry,output,loaders,plugins 4.使用 ...

  8. jquery实现左侧菜单 效果

    html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...

  9. 第06章 AOP XML

    第06章 以XML方式配置切面 1.概述 除了使用AspectJ注解声明切面,Spring也支持在bean配置文件中声明切面.这种声明是通过aop名称空间中的XML元素完成的. 正常情况下,基于注解的 ...

  10. PHP7.1以上版本 count()报错

    报错信息如下: count(): Parameter must be an array or an object that implements Countable (View: D:\fookusy ...