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

Rust 学习笔记(持续更新中…)

一、 编译和运行是单独的两步

  • 运行 Rust 程序之前必须先编译,命令为:rustc 源文件名 - rustc main.rs
  • 编译成功之后,会生成一个二进制文件 - 在 Windows 上还会生产一个 .pdb 文件 ,里面包含调试信息
  • Rust 是 ahead-of-time 编译的语言 - 可以先编译程序,然后把可执行文件交给别人运行(无需安装 Rust )
  • rustc 只适合简单的 Rust 程序

二、Cargo

1. 简介

  • Cargo 是 Rust 的构建系统和包管理工具 - 它可以:构建代码、下载依赖的库、构建这些库…
  • 安装 Rust 的时候会自动把 Cargo 也安装上,不需要再另外安装
  • 检查是否安装成功:cargo --version 

2.  使用 Cargo 创建项目

  • 创建项目命令:cargo new hello_cargo - 项目名称也是 hello_cargo,会创建一个新的目录 hello_cargo:Cargo.tomlsrc 目录(main.rs)、初始化了一个新的 Git 仓库.gitignore - 可以使用其它的 VCS 或不使用 VCS:cargo new 的时候使用 --vcs 这个flag)

        VCS:版本控制系统(JvJv注)

3. Cargo.toml

  •  TOML(Tom's Obvious,Minimal Language)格式,是 Cargo 的配置文件的格式

  • [ package ]:是一个区域标题,表示下方内容是用来配置包(package)的
    1. name:项目名
    2. version:项目版本
    3. authors:项目作者
    4. edition:使用的 Rust 的版本
  • [ dependencies ]:另一个区域的开始,它下面会列出项目的依赖项
  • 在 Rust 中,代码的包称作 crate

4. src / main.rs

  •  cargo 生成的 main.rssrc 目录下
  • Cargo.toml 在项目顶层下
  • 顶层目录可放置:README、许可信息、配置文件和其它与程序源码无关的文件
  • 如果创建项目时没有使用 cargo,也可以按照以下步骤把项目转化为使用 cargo 的形式:
    1. 把源代码文件移动到 src
    2. 创建 Cargo.toml 并依次填写相应的配置

5. 构建 Cargo 项目:cargo build

  • 创建可执行文件:target / debug / hello_cargotarget \ debug \ hello_cargo.exe(Windows 下)
  • 运行可执行文件:./ target / debug / hello_cargo.\ target \ debug \ hello_cargo.exe(Windows 下)
  • 第一次运行 cargo build 会在顶层目录生产 cargo.lock 文件
    1. 该文件负责追踪项目依赖的精确版本
    2. 不需要手动修改该文件

6. 构建并运行 Cargo 项目:cargo run

  • 它是:编译 + 执行
  • 如果之前编译成功过,且源码没有改变,那么就会直接运行二进制文件

7. 检查代码:cargo check

  • 检查代码,确保代码能通过编译,但不产生任何可执行文件
  • cargo check 要比 cargo build 快得多
  • 好处:编写代码的时候,可以连续、反复的使用 cargo check 检查代码,提高效率

8. 为发布构建

  • cargo build --release
    1. 编译时会进行优化
    2. 代码会运行的更快,但是编译时间更长
    3. 会在 target / release 而不是 target / debug 生成可执行文件
  • 两种配置
    1. 开发时
    2. 正式发布时

http://www.lryc.cn/news/150249.html

相关文章:

  • 递归算法学习——电话号码的字母组成,括号生成,组合
  • 记录 JSONObject.parseObject json对象转换 对象字段为null
  • Android Native Code开发学习(二)JNI互相传参返回调用
  • Ubuntu 下安装Qt5.12.12无法输入中文解决方法
  • 微信小程序左上角home图标的解决方法之一 层级混乱导致的home图标显示的问题 自定义左上角左侧图标的返回路径
  • Kubernetes(K8s 1.28.x)部署---超详细
  • spring高级源码50讲-20-36(springMVC)
  • Leetcode Top 100 Liked Questions(序号141~189)
  • 网络编程day3-FTP客户端项目
  • 音频母带制作::AAMS V4.0 Crack
  • 【SpringCloud】SpringCloud整合openFeign
  • 成集云 | 飞书审批同步金蝶云星空 | 解决方案
  • 【计算机组成 课程笔记】3.2 算数运算和逻辑运算的硬件实现
  • python元组的不可变性和应用场景
  • 配置化开发的核心设计 - Schema
  • HTTP协议概述
  • fastjson2 打开 AutoType
  • 封装(个人学习笔记黑马学习)
  • PyTorch 模型性能分析和优化 - 第 3 部分
  • 【力扣每日一题】2023.9.1 买钢笔和铅笔的方案数
  • 实现不同局域网间的文件共享和端口映射,使用Python自带的HTTP服务
  • Kubernetes技术--k8s核心技术Pod
  • 基于Springboot实现的Echarts图表
  • adb server version (41) doesn‘t match this client (39)
  • B080-RabbitMQ
  • 关于岛屿的三道leetcode原题:岛屿周长、岛屿数量、统计子岛屿
  • lintcode 1081 · 贴纸拼单词【hard 递归+记忆化搜索才能通过】
  • HarmonyOS/OpenHarmony(Stage模型)应用开发单一手势(二)
  • 计算机毕设之基于Python+django+MySQL可视化的学习系统的设计与实现
  • Kotlin inline、noinline、crossinline 深入解析