首页 > 其他分享 >Rust 走马观花(一)—— 从安装到编译

Rust 走马观花(一)—— 从安装到编译

时间:2022-12-01 11:35:36浏览次数:64  
标签:cargo Cargo rs 编译 走马观花 main Rust

Rust 官网的入门教程已经很详情,本文只是基于官方文档做一些补充

请配合官方文档《Rust 入门:快速配置 Rust 开发环境并编写一个小应用》食用

 

一、VS Code 扩展

在正式开始编写 Rust 之前,可以先安装一些扩展插件

1. rust-analyzer (核心插件, 如同 vetur 之于 vue)

2. Better TOML ( .toml 文件高亮)

 

二、安装并创建项目

window:

下载并运行 rustup-init.exe

 选第 2 项,然后有个二次确认,输入 y 并回车,看到以下信息:

 输入 2 开始自定义配置

 分别需要输入 x86_64-pc-windows-gnu,nightly,回车,回车

最终配如上,然后输入 1 开始安装


macOS / Linux:

如果是 macOS 或者 Linux, 直接在终端运行以下命令安装 Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

安装的同时会安装 Cargo,这是 Rust 的构建工具和包管理器

安装结束后可以通过 cargo --version 检查是否安装成功

然后可以使用 cargo new 创建项目

比如在  ~/project  目录下执行  cargo new hello-rust 最终就会生成新项目  ~/project/hello-rust 

创建的项目有会有以下文件

hello-rust
|- Cargo.toml
|- src
  |- main.rs

但如果提前安装了 VS Code 插件 rust-analyzer, 就会多出 target 目录和 Cargo.lock 文件


这里的 Cargo.toml 就像是前端项目中的 package.json, 用于记录项目的基本信息和依赖包

// 在 Rust 中,依赖包被称作 crate

Cargo.lock 就像是 package-lock.json, 记录了项目依赖的精确版本,不要手动修改!

而 target 目录是项目构建的产物,后面会介绍 


现在已经创建了一个简单的 rust 项目,接下来在项目的根目录下执行以下命令

rustc src/main.rs

执行上面的代码之后,会当前目录生成一个可执行的 main 文件(window 系统会生成 main.exe),这个文件就是 src/main.rs 的编译结果

对于单个文件可以采用 rustc 这种编译方式,但对于一个完整项目,需要使用 cargo 来编译

 

三、添加依赖

Rust 中的代码包被称为 crate,统一管理在 crates.io,就像是 npm

接下来会用到 ferris-says 这个库,可以在 Cargo.toml 手动追加 dependencies 信息

也可以通过命令行的方式添加(就像 yarn add)

cargo add [email protected]

// cargo 包的版本规则和 npm 一样,可以采用 ^ ~ * 等符号,如 ^0.2

然后开始编辑 src/main.rs 文件,这个文件是 cargo 项目的入口文件,也称作“根”

首先删掉 main.rs 中的所有内容,然后添加这一行代码:

use ferris_says::say;

这行代码的含义是:从 ferris_says 这个包 (crate) 里面导出了 say 这个函数,类似于:

import { say } from 'ferris_says';

最终以下面的代码替换 main.rs 中的内容

use ferris_says::say;
use std::io::{stdout, BufWriter};

fn main() {
    let stdout = stdout();
    let message = String::from("Hello Rust!");
    let width = message.chars().count();
    let mut writer = BufWriter::new(stdout.lock());
    say(message.as_bytes(), width, &mut writer).unwrap();
} 

 

四、编译项目

接下来使用 cargo 编译项目,在项目的根目录下执行以下命令

cargo build

然后 Cargo 会安装项目中用到的依赖包,生成 Cargo.lock 文件,并创建开发调试文件 target/debug/*

不过在开发的时候一般不需要使用 cargo build,而是使用 cargo run

这个命令会编译代码,并在终端执行编译后的文件:

 

这里我连续执行了两次 cargo run,可以看到第一次 run 有三个阶段: Compiling -> Finished -> Running

而第二次 run 由于没有代码变更,所以直接跳过了 Compiling 阶段


开发完成后,可以使用 cargo build --release 编译

这个命令的编译时间更长,但编译后的代码会运行的更快,体积更小

编译后的文件会生成到 target/release 目录下

 

标签:cargo,Cargo,rs,编译,走马观花,main,Rust
From: https://www.cnblogs.com/wisewrong/p/16847126.html

相关文章

  • 利用微信电脑最新版 反编译微信小程序 无需root
    一、前言​​跳转​​)这个工具其实很早就出来了,但是这个工具需要提取微信小程序的wxapkg文件,就是微信小程序编译后的文件。最近发现电脑版微信可以打开微信小程序了,于是我......
  • 使用编译器aarch64-xilinx-linux-gcc,导致uboot编译出现错误“aarch64-xilinx-linux-ld
    KV260PetaLinuxBSP的environment-setup-cortexa72-cortexa53-xilinx-linux会导入aarch64-xilinx-linux系列工具,并设置CROSS_COMPILE为aarch64-xilinx-linux-。因此使用......
  • PaddleOCR 2.6 编译详细步骤 + 踩坑记录(C++ GPU版)
    导读本文主要介绍PaddleOCRv2.6C++GPU版的编译详细步骤与踩坑记录,方便大家快速上手。(公众号:OpenCV与AI深度学习)PaddleOCR2.6  8月24日PaddleOCR更新了2.6版本,下面......
  • top源码可编译版
    循环打印当前系统的进程状态信息/**Copyright(c)2008,TheAndroidOpenSourceProject*Allrightsreserved.**Redistributionanduseinsourceandbin......
  • Apache Dubbo 多语言体系再添新员:首个 Rust 语言版本正式发布
    DubboRust定位为Dubbo多语言体系的重要实现,提供高性能、易用、可扩展的RPC框架,同时通过接入DubboMesh体系提供丰富的服务治理能力。本文主要为大家介绍DubboRu......
  • MySQL源码编译安装
    MySQL源码编译安装Linux环境:CentOS7.6MySQL版本:MySQL5.7.37安装路径:/usr/local/mysql1.创建相关目录#创建用户useradd-s/sbin/nologinmysql#创建安装目录并......
  • 微信小程序反编译
    1 准备一台ROOT的安卓手机解密工具:UnpackMiniApp.exe反编译工具:wxappUnpacker.zipPC安装node环境2 提取wxapkg文件PC端也能找到wxapkg文件,但千万不要用,老......
  • windows下编译调试 Elasticsearch 8.7.0 源码
    最近想从代码层面学习下ElasticSearch,于是下载代码并导入到idea中,开始一顿操作,gradle各种倒腾,还是没法直接从代码运行进程,最后选择了一种不那么直接的debug方法,远程......
  • php 编译代码
    编译其实就是把所有的代码整合在于一个文件,减少文件包含时间,加快php解析,虽然优化后时间上提升了不多,但能优化便多多少少进行优化。下面给一个编译例子,从而引申。//定义编译......
  • 《Kotlin 程序设计》第七章 Kotlin 编译过程分析
    第七章Kotlin编译过程分析​​http://mp.weixin.qq.com/s/lEFRH523W7aNWUO1QE6ULQ​​我们知道,Kotlin基于Java虚拟机(JVM),通过Kotlin编译器生成的JVM字节码与Java编译的字节......