二、Rust变量

第一个Rust程序

  • 我们先使用cargo new demo新建一个项目,然后进入项目文件夹会看到这样的目录结构

src

main.rs

  • .gitignore
  • Cargo.lock
  • Cargo.toml
  • 打开main.rs,我们就能看到熟知的Hello World了,我们直接在项目根目录下执行cargo run就能看到编译运行输出啦,并且目录下会生成一个target文件夹,我们编译生成的可执行文件就在target下的debug文件夹中。

变量

变量的定义

  • 现在让我们来给程序加一点东西,和C语言一样,main函数为程序的入口,所以我们在main函数中添加
let number = 10;
println!("{}",number);
  • 这样我们就定义了一个名为number,值为10的变量,然后使用println宏来输出它,在rust当中,!结尾的是一个宏,所以这里println!其实是个宏,里面我们使用一对大括号来占位,类似于C语言中的 %_ 格式化输出,关于格式化输出请往后看。
  • 如果我们想输出一对大括号怎么办呢,那就用一对大括号把要输出的一对大括号括起来
println!("{
    {}}");

输出结果

{}
  • 现在我们有了一个变量,我们尝试改变它的值
let number = 10;
number = 11;
println!("{}",number);
  • 在其他语言当中,这样的操作看起来好像没什么问题,但是这样的操作在rust当中是不允许的,如果我们直接编译的话就会产生一些如下错误
let number = 10;
   |         ------
   |         |
   |         first assignment to `number`
   |         help: make this binding mutable: `mut number`
11 |     number = 11;
   |     ^^^^^^^^^^^ cannot assign twice to immutable variable
  • 因为这样定义的变量是不可变的,我们需要加上一个mut关键字对其进行修饰,才能够使它可变
let mut number = 10;
number = 11;
println!("{}",number);
  • 这样就没有任何问题了
    输出结果
11

变量类型

  • Rust实际上是一个强类型语言,但是为什么在定义变量的时候不用指定其类型呢,原因在于Rust能够自动推导类型,但是我们仍然可以显式地将数据类型给出
let number:i32 = 10;
  • 这样我们就显式地定义了一个i32类型的变量,值为10,接下来我们来看看Rust当中其他的一些数据类型。

Rust中的整数类型

长度 有符号 无符号
8位 i8 u8
16位 i16 u16
32位 i32 u32
64位 i64 u64
arch isize usize
  • arch 是由 CPU 构架决定的大小的整型类型。大小为 arch 的整数在 x86 机器上为 32 位,在 x64 机器上为 64 位。

Rust中的整数字面值

整数字面值 示例
Decimal 98_222
Hex 0xff
Octal 0o77
Binary 0b1111_0000
Byte(u8 only) b’A’

Rust中的其他数据类型

符号 描述
f32 单精度浮点型
f64 双精度浮点型,也是Rust默认的浮点类型
bool 布尔类型
char 字符类型
  • 除了上面这些,Rust还有一些其他的数据类型,比如元组,Vec、HashMap、String、切片等等,后面再来慢慢扯。

Rust的格式化输出

  • 我们可以像这样来使用位置参数
println!("{0},{1},{1},{0}", "A", "B");

输出结果

A,B,B,A
  • 可以像这样使用赋值语句
println!("{a} {b} {c}",
             a="I",
             b="like",
             c="rust");

输出结果

I like rust
  • 可以在 : 后面指定特殊的格式。
println!("{:b}", 12);

输出结果

1100
  • 可以按指定宽度来右对齐文本。也可以在空位补上其他字符
println!("{num:>width$}", num=2, width=6);
println!("{num:>0width$}", num=2, width=6);

输出结果

     2
000002
  • 可以这样来控制小数精度,默认会四舍五入
println!("{:.4}",3.1415926535);
println!("{:.*}",4,3.1415926535);

输出结果

3.1416
3.1416
  • 当遇到复杂数据类型无法输出时,你可以使用{:?}来解决

原文地址:https://fantety.top/index.php/2021/04/17/rust2/

你可能感兴趣的:(Rust基础,rust,编程语言)