为什么物联网领域使用Rust的项目越来越多?

不看这几篇好文,就别说自己了解物联网

 

1. 概述        

     

        Rust是由Mozilla员工Graydon Hoare于2006年作为个人项目而创造,Mozilla于2009年开始赞助该项目。2012年,第一个Rust编译器发布,2015年第一个Rust1.0稳定版本发布,目前,Rust已加发展到1.51版本。

       2021年2月8日,Rust基金会成立,Rust商标及所有权移交给基金会。基金会创始白金成员包括亚马逊、微软、谷歌、华为和Mozilla,白金会员Facebook。

截止到2021年5月,Rust在TOIBE编程语言排行榜上排名24%,占比0.66%。

 

2. Rust功能

2.1. 语言主要特性

  • 类型推导

Rust支持表达式类型推断,可根据代码自动推动表达式类型。

举例:

let a = 1;  //a是i32类型
let x = 9.0;  //x是f64类型

 

  • 零成本抽象

Rust中增加抽象定义,不会影响运行性能。

 

  • 模式匹配

通过match关键字,可以很方便的对变量的值、范围、部分内容等进行匹配操作,支持匹配数字、字符串、函数调用等,支持逻辑与或匹配。匹配的作用可以简单理解为C语言的Switch语法功能的增强。

举例:

    let a = 3;
    match a {
        1 => println!("a is 1"),
        2...5 => println!(" 2<=a<=5"),
        6 | 8 => println!(" a=6 or a=8"),
        _ => println!("其它")
    }

  • 所有权

内存所有权是Rust内存安全的核心基础。内存在一个时刻,所有权只能属于一个变量,超出作用域后,会被自动释放。所有权支持转移和借用。该机制可以有效解决空指针、野指针、内存泄漏、内存重复释放等内存问题。

举例:

    let a = vec![1, 2, 3,4, 5];
    ...
    let b = a;  //所有权转移到b,通过a无法再访问

 

  • 错误处理

Rust支持统一并简洁的错误处理方式。错误码统一,且支持同时返回值及错误码。

Rust将错误区分未可恢复错误及不可恢复错误,支持可恢复错误传递。

举例:

use std::fs::File;

fn main() {
    let f = File::open("hello.txt");

    let f = match f {
        Ok(file) => file,   // 成功处理
        Err(error) => println!("Problem opening the file: {:?}", error),  //错误处理
    };
    panic!("run here panic!"); // 不可恢错误
}

  • 切片(Slice)

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值