Rust简介

Rust核心特性与编程范式

Rust融合了多种编程范式。 Rust最初被设计为系统编程语言,但随着发展,它已经成为了一门更加通用的编程语言,包括系统软件、网络服务、桌面应用程序、嵌入式等。

Rust的 借用检查器(borrow_ checker) 是它区别与其他基于C的语言的关键。它通过强制单一所有权原则促进安全编码。


函数式编程

函数式编程指的是以函数为基础构建块,在函数式编程中,函数被视为一等公民,你可以在任何通常使用变量的地方使用函数。

函数式编程的好处:

  • 更加灵活
  • 更加透明
  • 不变性,它通过消除函数内的常见副作用,使程序更容易维护

面向表达式编程

Rust也是一种支持表达式编程的语言,在表达式编程中,大多数操作是能返回一个值的表达式,而不是什么都不返回的语句。

  • 表达式 就是一个返回值且只产生很小副作用或没有的一个或多个操作
  • 语句 语句不返回值,但它们可以改变程序状态,

面向表达式编程的好处是:

  • 没有副作用,程序更容易维护
  • 更加透明,表达式的值完全由其接口定义
  • 易于测试,因为表达式是基于接口的
  • 更容易编写文档,在没有副作用的情况下,表达式甚至可以替代文档
  • 更易于组合

面向模式编程

专业的Rust编程通常涉及大量的模式,Rust使用match进行模式匹配。与C++/Java中的switch语句不同(字符串和整型表达式的单维度模式匹配),在Rust中模式匹配进一步扩展到用户自定义类型和序列的实例。

面向模式匹配编程有几个好处:

  • 表达力强,能够将复杂代码简化为更简单的表达式
  • 更全面,面向模式是对面向表达式编程的补充
  • 更可靠,支持穷举模式匹配,这样更可靠且不容易出错。

特性

一、安全性

  • 不可变性是默认行为,以防止意外更改
  • 强制检查生命周期的正确性,以防类型悬挂引用等反模式
  • 以引用的方式安全使用指针
  • 对于大小动态变化的资源,使用资源获取即初始化(RAII)策略进行可靠内存管理

二、所有权

所有权通过单一所有者原则保证安全的内存访问。这一个原则将变量指派给单一所有者,而且拥有不会有超过一个所有者。

三、生命周期

生命周期是Rust的一个重要特性,用于避免程序对已失效的数据进行访问,在Rust中,引用本质上也是指针。如果不加约束可以通过悬挂引用访问当已经被释放的内存区域,从而导致程序崩溃。Rust通过生命周期解决了这个问题。
借用检查器用来对生命周期的正确性进行检查,如果有错误的生命周期,则会编译错误,而生命周期标注是当生命周期存在歧义时开发者需要显式标柱的。

四、无畏并发

当程序从顺序过渡到并发时,通常会进行一个称为强化的过程,以确保多线程代码有安全运行环境,其中一个标准步骤是移除作为共享数据的全局变量,有了无畏并发后就不需要这个强化过程了。

五、零成本抽象

这是Rust中的一个重要特性,是Rust中各个特性都遵循的原则,即无必要就应避免在运行时带来性能上的损失。

Rust术语

  • crate,在rust中,crate是最基本的编译单元,常见分类有
    • 可执行crate: 一个独立于其他create运行的可执行二进制文件
    • 库crate: 一个库,包含一组功能,用于其他create使用,不能独立运行
    • 外部crate: 一个外部依赖项。比如crate A引用crate B,但B和A不在同一个包内,那么crate B就是外部crate。或者说依赖。
  • 包 一个包由多个crate(包括可执行和库)构成
  • 模块 类似于其他语言的命名空间,可以使用模块在一个crate中创建层次化的程序结构,mod也有助于避免名称冲突
  • Cargo 在Rust中有几个Cargo相关部分
    • Cargo.toml 描述了包,包括依赖项,版本,作者,描述,等等
    • Cargo.lock 描述了包依赖项和特定版本,Cargo会自动生成这个文件
  • .rs Rust源文件的扩展名

Rust工具

  • Rustup Rust安装程序,按照Rust以及整个工具链
  • cargo 多功能工具,主要功能是包管理,辅助功能是编译代码、格式化源代码和创建新的crate等
cargo new --lib mylib
  • rustc Rust语言编译器,可以将Rust源文件(.rs)编译成可执行文件或库
rustc source.rs
  • rustdoc 文档生成器,将Rust源文件中的文档注释编译成帮助文档,并将其输出为HTML格式
  • Clippy 综合测试工具
  • Rustfmt 将源代码转化为符合Rust风格指南的格式
  • rust-analyzer Rust语言服务器,提供智能提示、错误检查、代码补全等功能
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值