跳至主要內容
01-rust第一课

-1. rust介绍

Rust语法结构和C类语言类似,C类语音包括 C(面向过程型)/C++/C#(面向对象型)

0. 安装

如果你暂时不想在本地安装,或者本地安装有问题,对于我们初学者来说,也有一个方便、快捷的方式,就是 Rust 语言官方提供的一个网页端的 Rust 试验场open in new window,可以让你快速体验。


黑静美原创...大约 5 分钟编程rust
10-trait

designing algorithms

__

这是另一个内容

要将Rust项目打包成一个可执行文件(exe程序,dgm程序,apk程序),我们需要构建一个带有用户界面的应用程序。可以使用Tauri框架来实现,它可以帮助我们将Rust应用程序与现代Web技术结合,创建跨平台的桌面应用程序。

使用Tauri框架创建桌面应用程序

步骤1:安装Tauri CLI

首先,我们需要安装Tauri CLI。确保您已安装Node.jsnpm,并使用以下命令安装Tauri CLI:


黑静美原创...大约 2 分钟编程rust
03-控制流和代码块

本文摘编自:快速入门:Rust中有哪些你不得不了解的基础语法?(著作权归AI悦创所有)

2. Rust 中的控制流

下面我们来了解一下 Rust 语言的控制流语句。

1. 分支语句 if else

Rust 中使用 if else 来构造分支。

fn main() {
    let number = 6;
    // 判断数字number能被4,3,2中的哪一个数字整除
    if number % 4 == 0 {
        println!("number is divisible by 4");
    } else if number % 3 == 0 {
        println!("number is divisible by 3");
    } else if number % 2 == 0 {
        println!("number is divisible by 2");
    } else {
        println!("number is not divisible by 4, 3, or 2");
    }
}

黑静美...大约 3 分钟编程rust
04-函数式编程

分割线构成的框中内容摘编自:快速入门:Rust中有哪些你不得不了解的基础语法?(著作权归AI悦创所有)

Rust 中的函数和模块 (各种代码块)

最后我们来看 Rust 的函数、闭包和模块,它们用于封装和复用代码。

a. 函数

函数基本上是所有编程语言的标配,在 Rust 中也不例外,它是一种基本的代码复用方法。在 Rust 中使用 fn 关键字来定义一个函数。比如:


黑静美原创...大约 4 分钟编程rust
05-切片与引用详讲(含生命周期)

&str

首先,&str 是字符串切片类型,表示对一段字符串的引用。它是一种不可变的、固定大小的引用,通常用于借用字符串数据。

'static 生命周期

生命周期 'static 表示数据在整个程序的运行期间都是有效的。换句话说,任何带有 'static 生命周期的引用都指向在程序运行期间一直存在的数据。


黑静美...小于 1 分钟编程rust
06-所有权与作用域

部分内容摘编自:https://bornforthis.cn/column/Rust/02.html(著作权归AI悦创所有)

所有权

Rust 的核心功能(之一)是 所有权ownership)。 在第一节课中,我们了解了 Rust 语言里的值有两大类:一类是固定内存长度(简称固定尺寸)的值,比如 i32、u32、由固定尺寸的类型组成的结构体等;另一类是不固定内存长度(简称非固定尺寸)的值,比如字符串 String。这两种值的本质特征完全不一样。而怎么处理这两种值的差异,往往是语言设计的差异性所在。


黑静美...大约 4 分钟编程rust
07-智能指针

Box<T>

RC<T>

由于rust的数据的所有权默认随着赋值(读取)而转移,但有时一个值会有多个所有者,为了支持多重所有权,我们使用:RC<T>

比如数据需要被程序的多个部分读取(只读),编译者无法确定哪个部分最后使用完这些数据时应该使用RC<T>

特点
  • 支持多重所有权

  • 只适用于单线程场景

  • 不可变引用,共享只读数据

  • RC<T>不在预倒入模块,需要使用std::rc::Rc导入

黑静美原创...大约 2 分钟编程rust
08-借用

摘编自学校课件

fn main(){
    let i=42;
    // let j= i; /* The Ownership changed, i can not be used
    let j= i+1-1; //i is still uesfull
    println!("{}", i);
    println!("{}", j);
    let s = String::from("hello");
    let b =s.clone()+" world";
    println!("{}", s);
    println!("{}", b);
    let b =s+" world"; //s cannot be used anymore
    // println!("{}", s);
    //                ^ value borrowed here after move
    println!("{}", b);

}

黑静美原创...小于 1 分钟编程rust
09-trait

黑静美原创...小于 1 分钟编程rust