Rust 01

//https://kaisery.github.io/trpl-zh-cn/ch03-02-data-types.html
fn main() {
    println!("Hello, world!");
    //标量(scalar)类型代表一个单独的值。Rust 有四种基本的标量类型:整型、浮点型、布尔类型和字符类型。
    // 你可能在其他语言中见过它们。让我们深入了解它们在 Rust 中是如何工作的。

    //数值类型 整型 浮点
    let a = 2;

    println!("a :{a}");

    let b = 2.0;
    let c:f32 = 3.0;

    let sum = 5 + 10;
    let diff = 95.5-4.3;

    let product = 4*30;

    let quotient = 56.7/32.2;

    let truncated = -5/3;

    let remainder = 43%5;

    println!("remainder :{remainder}");

    //布尔类型
    let t = true;
    let f:bool = false;

    println!("t:{t} f:{f}");

    //字符类型
    let str1 = 'z';
    let z_al :char = 'Z';
    let black_hat = '🎩';

    println!("str1:{str1} z_al:{z_al} black_hat:{black_hat}");


}

Rust 01记录的是Rust中的四种基本数据类型:整型、浮点、布尔、字符.

Rust 并不局限于底层系统编程。它表达力强、写起来舒适,让人能够轻松地编写出命令行应用、网络服务器等各种类型的代码——在本书中就有这两者的简单示例。使用 Rust 能让你把在一个领域中学习的技能延伸到另一个领域:你可以通过编写网页应用来学习 Rust,接着将同样的技能应用到你的 Raspberry Pi(树莓派)上。

Rust中数据类型是否可以使用松散类型定义

不,Rust 语言中不支持使用松散类型(loose typing)来定义数据类型。Rust 采用的是强类型(strong typing)和静态类型(static typing)系统,其设计原则强调严格的类型检查以确保内存安全和防止运行时错误。以下是 Rust 类型系统与松散类型相对立的几个关键特点:
静态类型: Rust 要求在编译时就明确指定所有变量和常量的类型。编译器会进行类型检查,确保所有的表达式和函数调用都遵循已声明的类型规则。如果类型不匹配,编译器将拒绝编译程序,强制开发者修正类型错误。
强类型约束: Rust 不允许变量在其生命周期内改变其原始声明的类型。一旦一个变量被声明为特定类型,它只能存储该类型或兼容类型的值。试图将不同类型的数据赋值给已声明变量将会导致编译错误。
无隐式类型转换: Rust 几乎没有隐式类型转换(coercion)。除非有明确的类型转换操作符(如 as)或编译器能够通过类型推断确定转换是安全的(如某些整数类型的自动提升),否则不同类型之间的混合运算或比较将导致编译错误。
类型安全: Rust 的类型系统旨在消除类型相关的运行时错误,如空指针异常、数组越界、未初始化的变量使用等。通过严格的类型检查和借用检查等机制,Rust 力求在编译阶段就捕获潜在的问题,而非依赖运行时检查。
因此,Rust 的设计哲学与松散类型的编程语言如 JavaScript 形成了鲜明对比。在 Rust 中,开发者必须对每个变量的类型有清晰的认识并进行精确的类型声明,编译器则扮演了严格的类型守门人的角色,确保程序在类型层面的正确性和安全性。这样的设计有助于减少运行时错误,提高程序的可靠性和性能。如果您需要在 Rust 中实现类似松散类型语言的灵活性,通常会借助泛型、枚举、模式匹配、trait 等语言特性来达到目的,同时保持类型系统的严格性。

posted @ 2024-04-15 08:52  ukyo--BlackJesus  阅读(2)  评论(0编辑  收藏  举报