• 【rust】cargo的概念和使用方法


    啥是cargo

    包管理器 cargo 提供了一系列的工具,从项目的建立、构建到测试、运行直至部署,为 Rust 项目的管理提供尽可能完整的手段,与 Rust 语言及其编译器 rustc 紧密结合。

    创建项目

    使用cargo创建一个项目:

    $ cargo new world_hello
    $ cd world_hello
    
    • 1
    • 2

    该项目结构如下:

    $ tree
    .
    ├── .git
    ├── .gitignore
    ├── Cargo.toml
    └── src
        └── main.rs
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    运行项目

    1. cargo run

    2. 手动编译和运行项目:cargo build + ./target/debug/world_hello
      这种方式运行的是 debug 模式,在这种模式下,代码的编译速度会非常快,但运行速度就慢了. 原因是,在 debug 模式下,Rust 编译器不会做任何的优化,只为了尽快的编译完成,让你的开发流程更加顺畅。可以添加 --release 来编译生成高性能的程序:

    cargo run --release
    cargo build --release
    ./target/release/world_hello
    
    • 1
    • 2
    • 3

    cargo check

    cargo check 是我们在代码开发过程中最常用的命令,它的作用很简单:快速的检查一下代码能否编译通过。因此该命令速度会非常快,能节省大量的编译时间。

    Cargo.toml 和 Cargo.lock

    Cargo.tomlCargo.lock 是 cargo 的核心文件,它的所有活动均基于此二者。

    • Cargo.toml 是 cargo 特有的项目数据描述文件。它存储了项目的所有元配置信息,如果 Rust 开发者希望 Rust 项目能够按照期望的方式进行构建、测试和运行,那么,必须按照合理的方式构建 Cargo.toml

    • Cargo.lock 文件是 cargo 工具根据同一项目的 toml 文件生成的项目依赖详细清单,因此我们一般不用修改它

    package 配置段落

    package 中记录了项目的描述信息,典型的如下:

    [package]
    name = "world_hello"
    version = "0.1.0"
    edition = "2021"
    
    • 1
    • 2
    • 3
    • 4

    name 字段定义了项目名称,version 字段定义当前版本,新项目默认是 0.1.0,edition 字段定义了使用的 Rust 大版本

    定义项目依赖

    使用 cargo 工具的最大优势就在于,能够对该项目的各种依赖项进行方便、统一和灵活的管理。

    Cargo.toml 中,主要通过各种依赖段落来描述该项目的各种依赖项:

    • 基于 Rust 官方仓库 crates.io,通过版本说明来描述
    • 基于项目源代码的 git 仓库地址,通过 URL 来描述
    • 基于本地项目的绝对路径或者相对路径,通过类 Unix 模式的路径来描述

    这三种形式具体写法如下:

    [dependencies]
    rand = "0.3"
    hammer = { version = "0.5.0"}
    color = { git = "https://github.com/ezekielljj" }
    geometry = { path = "crates/geometry" }
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    【人工智能】【Python】Matplotlib基础
    Redis入门完整教程:Python客户端redis-py
    MySQL-数据类型
    Glide缓存核心原理详解
    go语言中的协程和Java中线程以及进程的区别
    ArrayDeque详解(含动画演示)
    pandas基础语法
    实用网站大全
    【仿牛客网笔记】Elasticsearch,分布式搜索引擎——Spring整合Elasticsearch
    C++基础——new和delete动态开辟
  • 原文地址:https://blog.csdn.net/qq_51601649/article/details/128349189