网站建设任务书,江苏建设监理协会官方网站,长春三合一网站建设,网站建设要规避的Rust介绍
Rust#xff08;中文称为“锈”#xff09;是一种由Mozilla开发的系统编程语言#xff0c;它着力于提供安全性、并发性和实用性。Rust的设计目标是消除程序出现的内存安全性问题#xff0c;如空指针引用、数据竞争等。它通过在编译时进行严格的所有权和借用检查来…Rust介绍
Rust中文称为“锈”是一种由Mozilla开发的系统编程语言它着力于提供安全性、并发性和实用性。Rust的设计目标是消除程序出现的内存安全性问题如空指针引用、数据竞争等。它通过在编译时进行严格的所有权和借用检查来实现这一目标而不是依赖于垃圾回收机制。
以下是Rust的一些关键特点和概念 所有权系统Ownership Rust引入了所有权的概念通过所有权系统确保在任何时刻只有一个部分的代码可以访问数据从而避免了内存泄漏和悬挂指针等问题。 借用和生命周期 Rust允许通过借用borrowing来访问数据而不是直接拥有它。借用有严格的生命周期lifetimes概念确保引用的有效性。 模式匹配Pattern Matching Rust支持强大的模式匹配语法这使得代码更加清晰和可读同时也提高了代码的表达力。 零成本抽象Zero-cost Abstractions Rust提供了高度抽象的功能如泛型、trait等但同时它能够在不引入运行时开销的情况下实现这些抽象。 并发安全性 Rust在语言级别提供了并发安全性避免了数据竞争和其他并发问题。它使用所有权和借用系统来保证多线程代码的安全性。 无空指针 Rust在语言层面上消除了空指针引用问题确保不会出现野指针和悬挂指针。 高性能 Rust的设计注重性能可以用于开发高性能的系统级应用和底层组件。 社区支持 Rust拥有一个活跃的社区提供丰富的文档、库和工具帮助开发者更容易地学习和使用这门语言。
由于这些特性Rust在一些领域取得了广泛的应用包括系统编程、嵌入式系统、网络服务和操作系统等。它的设计理念使其成为一种强大的编程语言适用于需要高性能和内存安全的应用场景。
Rust 特别擅长的领域
高性能 Web ServiceWebAssembly命令行工具网络编程嵌入式设备系统编程
Rust 的用户和案例
Google:新操作系统 Fuschia其中 Rust 代码量大约占30%Amazon:基于Linux开发的直接可以在裸机、虚机上运行容器的操作系统System76:纯Rust 开发了下一代安全操作系统 Redox蚂蚁金服:库操作系统 Occlum斯坦福和密根大学:嵌入式实时操作系统应用于 Google 的加密产品·微软:正在使用 Rust 重写 Windows 系统中的一些低级组件。微软:WinRT/Rust 项目Dropbox、Yelp、Coursera、LINE、Cloudflare、Atlassian、npm、Ceph、百度、华为、Sentry、Deno…Neural-Chat-7B-v3-1 是一个基于 Mistral-7B-v0.1 调整的模型并在Open-Orca/SlimOrca开源数据集上进行了训练。该模型在2023年9月至10月间进行了训练。它融合了直接偏好优化DPO算法凸显了其先进的微调和优化能力。 我们将使用 Rust Wasm 技术栈来开发和部署这个模型的应用程序。不需安装复杂的 Python 包或 C 工具链 如何在你自己的设备上运行 Neural-Chat-7B-v3-1如何为 Neural-Chat-7B-v3-1 创建与 OpenAI 兼容的 API 服务 具体教程见https://zhuanlan.zhihu.com/p/665968480
编译与运行 Rust 程序
。编译: rustc main.rs 。运行:
Windows:. main.exeLinux/mac: ./main
编译和运行是单独的两步 。运行 Rust 程序之前必须先编译命令为: rustc 源文件名-rustcmain.rs 。编译成功后会生成一个二进制文件 -在Windows 上还会生成一个 .pdb 文件里面包含调试信息。Rust 是 ahead-of-time 编译的语言
可以先编译程序然后把可执行文件交给别人运行(无需安装 Rust)rustc 只适合简单的 Rust 程序…
开发工具
base
Windows linux
curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh
IDE
。Visual Studio Code
Rust 插件 。Clion (Intelli ldea 系列)Rust 插件 Hello World Rust 程序解剖
定义函数:fn main(){没有参数没有返回main 函数很特别:它是每个 Rust 可执行程序最先运行的代码打印文本; println!(Hello, world!);Rust的缩进是4个空格而不是 tabprintln! 是一个 Rust macro (宏)。如果是函数的话就没有!“Hello World”是字符串它是 println!的参数这行代码以;结尾
Cargo创建构建项目
介绍
Cargo 是 Rust 的构建系统和包管理工具- 构建代码、下载依赖的库、构建这些库。安装 Rust 的时候会安装 Cargo使用cargo --version查看。
使用 Cargo 创建项目
创建项目: cargo new hello_cargo
。src/main.rs
cargo 生成的 main.rs 在 src目录下而 Cargo.toml在项目顶层下源代码都应该在 src目录下顶层目录可以放置:README、许可信息、配置文件和其它与程序源码无关的文件·如果创建项目时没有使用 cargo也可以把项目转化为使用 cargo:把源代码文件移动到 src 下创建 Cargo.toml并填写相应的配置
构建命令 常见的数据类型
基本类型
类型描述i8, i16, i32, i64, i128有符号整数u8, u16, u32, u64, u128无符号整数isize, usize与计算机架构相关的整数通常用于索引和长度f32单精度浮点数f64双精度浮点数bool布尔类型true 或 falsechar字符类型
复合类型
类型描述struct结构体类型用于创建自定义的数据结构enum枚举类型允许创建具有多个变体的类型array具有固定大小的相同类型元素的数组 ,如果想让你的数据存放在 stack(栈)上而不是 heap(堆)上或者想保证有固定数量的元素这时使用数组更有好处。但是数组没有 Vector 灵活(以后再讲)。tuple元组类型将多个不同或相同类型的值组合在一起slice数组切片类型对数组的引用表示数组的一部分T引用类型对类型 T 的不可变引用mut T引用类型对类型 T 的可变引用*const T不可变指针*mut T可变指针fn函数类型
数组访问不能越界
Rust数组访问不能越界C和C中如果使用如果你使用 operator[] 越界访问程序会进入未定义行为的状态可能导致程序崩溃或产生不可预测的结果。c的vector的 at() 成员函数提供边界检查。