当前位置: 首页 > news >正文

[每周一更]-(第61期):Rust入门策略(持续更新)

在这里插入图片描述

一门语言的学习,就要从最基本的语法开始认识,再分析不同语言的区别,再加上实战,才能更快的学会,领悟到作者的设计思想;

介绍

Rust编程练习
开发工具VSCode及插件

  • 社区驱动的 rust-analyzer
  • Even Better TOML,支持 .toml 文件完整特性
  • Error Lens, 更好的获得错误展示
  • One Dark Pro, 非常好看的 VSCode 主题
  • CodeLLDB, Debugger 程序
  • Keymap Extensions 更新快捷键到 eclipse
  • 实时保存 搜索栏搜索:Auto Save. 然后选择afterDelay. 再选择设置100毫秒自动保存 ps:1000毫秒=1秒 100毫秒=0.1秒。

学习资料

  • https://www.runoob.com/rust/rust-ownership.html
  • https://course.rs/community.html

重点知识点

所有权规则

所有权有以下三条规则:

  • Rust 中的每个值都有一个变量,称为其所有者。
  • 一次只能有一个所有者。
  • 当所有者不在程序运行范围时,该值将被删除。
    这三条规则是所有权概念的基础。

Rust 区别与其他高级语言的重要特征,在于其内存管理的两个特点:

  • (1)变量超出作用域会自动释放。对于简单值类型的栈内存(如int,struct)超出作用域后自动释放,这个逻辑在各个语言都有实现。而对于 new 出来的堆内存,在c/c++中是要手动释放的,在java和dotnet中要委托垃圾回收释放或手动写 dispose 语句释放。而垃圾回收不是实时的,会影响性能。而释放语句总会有懒人忘记写的。而 Rust 对栈内存和堆内存一视同仁,超出作用域一律自动释放。Rust 的这个特点在兼顾性能的情况下、有效的减少了代码量和内存泄漏隐患。
  • (2) “所有权” :某段内存只能被最后的变量名所有,前面声明过的变量都作废,这有效的避免被多个变量释放的问题,而且该操作是在编译期就可以检查到的,这策略可在编译期就能有效的避免空指针问题。这部分对于所有权的设定,看起来很奇怪,其实本质上就是在语言层面禁止了同一个可变数据会有多个变量引用的情况,一旦作为参数传递了,就会发生所有权的移动(Move)或借用(Borrow)。赋值给另一个变更也就自动放弃了所有权。从根本上杜绝了并发情景下的数据共享冲突。

安装教程

0.通过官网https://www.rust-lang.org/tools/install 安装rust

rustc -V # 查看rust的版本
cargo -V # 查看cargo包版本

1.使用 rustc 命令编译 runoob.rs 文件:

rustc runoob.rs   # 编译 runoob.rs 文件

2.编译后会生成 runoob 可执行文件:

./runoob    # 执行 runoob
Hello World!

3.cargo

cargo build 构建
cargo run   构建+运行
cargo check 检查代码准确性
http://www.lryc.cn/news/168100.html

相关文章:

  • 线程安全问题的原因及解决方案
  • 基于matlab中点放炮各类地震波时距曲线程序
  • vue中el-dialog 中的内容没有预先加载,因此无法获得内部元素的ref 的解决方案 使用强制提前加载dialog方法
  • vue-h5移动Web的rem配置
  • 企业级数据仓库-数仓实战
  • Spring Boot 下载文件(word/excel等)文件名中文乱码问题|构建打包不存在模版文件(templates等)
  • Ansible数组同步至Shell脚本数组中
  • 私域流量的优势
  • Java 中“1000==1000”为false,而”100==100“为true?
  • 片上网络(1)概述
  • 使用 React Native 针对 Android 进行开发
  • LeetCode 每日一题 2023/9/11-2023/9/17
  • Linux系统调试篇——GDBSERVER远程调试
  • 前端实现打字效果
  • Unix和Linux、GNU和GPL、RHEL和Centos、Debian和Ubuntu
  • InfiniBand vs 光纤通道,存储协议的选择
  • 第2章_freeRTOS入门与工程实践之单片机程序设计模式
  • python LeetCode 刷题记录 58
  • HarmonyOS开发:那些开发中常见的问题汇总(一)
  • 新能源汽车驱动电机的基本知识
  • 流媒体协议——RTSP
  • Arcgis提取点数据经纬度
  • 【小记录】jupyter notebook新版本
  • Ubuntu安装深度学习环境相关(yolov8-python部署)
  • jmeter采集ELK平台海量业务日志( 采用Scroll)
  • React 全栈体系(五)
  • 动态规划——状态机模型
  • 合宙Air724UG LuatOS-Air LVGL API控件-图片(Gif)
  • 【C语言】指针和数组笔试题解析(2)
  • 3.3 DLL注入:突破会话0强力注入