Rust在线运行

版本:

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
first programe! 发布于:2024-10-25 16:46 ### VecDeque 复制测试 发布于:2024-04-23 09:37 ## 输入三个整数x,y,z,请把这三个数由小到大输出。 发布于:2024-03-03 11:45 # rust slice 发布于:2024-02-20 13:49 rust学习 发布于:2024-01-04 08:20 Rust hello world 发布于:2024-01-01 23:49 # Rust的常用迭代器适配器 ## map 可以用闭包将迭代器里的每个元素应用闭包里自定义的逻辑,从而生成处理后的元素迭代器,可以应用于数据处理与提取. ## filter 可以使用闭包过滤迭代器里的元素,只挑选出符合要求的元素组成新的迭代器返回。 ## fold ## zip ## chunks ## Chain ## all ## any ## windows ## cycle 发布于:2023-12-27 17:58 # 箱子、栈和堆 在 Rust 中,所有值默认都是栈分配的。通过创建 Box<T>,可以把值装箱(boxed)来使它在堆上分配。箱子(box,即 Box<T> 类型的实例)是一个智能指针,指向堆分配的 T 类型的值。当箱子离开作用域时,它的析构函数会被调用,内部的对象会被销毁,堆上分配的内存也会被释放。 被装箱的值可以使用 * 运算符进行解引用;这会移除掉一层装箱。 发布于:2023-12-27 17:40 测试rust的值域安全性 发布于:2023-12-12 09:52 书本的内容 发布于:2023-11-17 17:25 rust代码测试 发布于:2024-07-09 15:44 Learn Rust 发布于:2023-11-09 17:33 Rust学习使用 发布于:2023-05-21 11:21 exercise trait 发布于:2023-04-16 19:42 闭包的捕获 发布于:2023-01-28 16:32 Rust 结构体相关代价 发布于:2022-12-29 09:22 [package] name = "hello_rust" version = "0.1.0" authors = ["gress"] edition = "2018" [dependencies] anyhow= “0.1” 发布于:2022-12-06 20:09 第一个Rust程序 发布于:2022-06-20 00:11 开始学习rust 发布于:2022-05-30 13:51 enum sample 发布于:2022-02-24 15:03 泛型、特性与生命周期协同作战里的实例如何使用 发布于:2022-01-02 16:25 Rust第四章---所有权 发布于:2021-12-31 15:31 Rust第三章-常见编程概念 发布于:2021-12-31 13:16 Hello World Rust 发布于:2021-02-11 19:18 [更多]
显示目录

基础语法



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

Rust 基础语法

变量,基本类型,函数,注释和控制流,这些几乎是每种编程语言都具有的编程概念。

这些基础概念将存在于每个 Rust 程序中,及早学习它们将使你以最快的速度学习 Rust 的使用。

变量

首先必须说明,Rust 是强类型语言,但具有自动判断变量类型的能力。这很容易让人与弱类型语言产生混淆。

如果要声明变量,需要使用 let 关键字。例如:

let a = 123;

只学习过 JavaScript 的开发者对这句话很敏感,只学习过 C 语言的开发者对这句话很不理解。

在这句声明语句之后,以下三行代码都是被禁止的:

a = "abc";
a = 4.56; 
a = 456;

第一行的错误在于当声明 a 是 123 以后,a 就被确定为整型数字,不能把字符串类型的值赋给它。

第二行的错误在于自动转换数字精度有损失,Rust 语言不允许精度有损失的自动数据类型转换。

第三行的错误在于 a 不是个可变变量。

前两种错误很容易理解,但第三个是什么意思?难道 a 不是个变量吗?

这就牵扯到了 Rust 语言为了高并发安全而做的设计:在语言层面尽量少的让变量的值可以改变。所以 a 的值不可变。但这不意味着 a 不是"变量"(英文中的 variable),官方文档称 a 这种变量为"不可变变量"。

如果我们编写的程序的一部分在假设值永远不会改变的情况下运行,而我们代码的另一部分在改变该值,那么代码的第一部分可能就不会按照设计的意图去运转。由于这种原因造成的错误很难在事后找到。这是 Rust 语言设计这种机制的原因。

当然,使变量变得"可变"(mutable)只需一个 mut 关键字。

let mut a = 123;
a = 456;

这个程序是正确的。

常量与不可变变量的区别

既然不可变变量是不可变的,那不就是常量吗?为什么叫变量?

变量和常量还是有区别的。在 Rust 中,以下程序是合法的:


let a = 123;
let a = 456;

但是如果 a 是常量就不合法:

const a: i32 = 123;
let a = 456;

变量的值可以"重新绑定",但在"重新绑定"以前不能私自被改变,这样可以确保在每一次"绑定"之后的区域里编译器可以充分的推理程序逻辑。 虽然 Rust 有自动判断类型的功能,但有些情况下声明类型更加方便:

let a: u64 = 123;

这里声明了 a 为无符号 64 位整型变量,如果没有声明类型,a 将自动被判断为有符号 32 位整型变量,这对于 a 的取值范围有很大的影响。

重影(Shadowing)

重影的概念与其他面向对象语言里的"重写"(Override)或"重载"(Overload)是不一样的。重影就是刚才讲述的所谓"重新绑定",之所以加引号就是为了在没有介绍这个概念的时候代替一下概念。

重影就是指变量的名称可以被重新使用的机制:

实例

fn main() {
    let x = 5;
    let x = x + 1;
    let x = x * 2;
    println!("The value of x is: {}", x);
}

这段程序的运行结果:

The value of x is: 12

重影与可变变量的赋值不是一个概念,重影是指用同一个名字重新代表另一个变量实体,其类型、可变属性和值都可以变化。但可变变量赋值仅能发生值的变化。

let mut s = "123";
s = s.len();

这段程序会出错:不能给字符串变量赋整型值。

由JSRUN为你提供的Rust在线运行、在线编译工具
        JSRUN提供的Rust 在线运行,Rust 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout