One - One Code All

Blog Content

Cargo 教程

Rust   2017-04-08 15:36:20

Cargo 是 Rust 的构建系统和包管理器。


Rust 开发者常用 Cargo 来管理 Rust 工程和获取工程所依赖的库。

创建一个名为 greeting 的工程,

cargo new greeting 
cd ./greeting 
cargo build 
cargo run

 


Cargo 新建了一个名为 greeting 的文件夹并在里面部署了一个 Rust 工程最典型的文件结构。这个 greeting 文件夹就是工程本身。


Cargo 功能

Cargo 除了创建工程以外还具备构建(build)工程、运行(run)工程等一系列功能,构建和运行分别对应以下命令:


cargo build 

cargo run 

Cargo 还具有获取包、打包、高级构建等功能,详细使用方法参见 Cargo 命令。


在 VSCode 中配置 Rust 工程

Cargo 是一个不错的构建工具,如果使 VSCode 与它相配合那么 VSCode 将会是一个十分便捷的开发环境。



我们用 VSCode 打开 greeting 文件夹。


打开 greeting 之后,在里面新建一个新的文件夹 .vscode (注意 vscode 前面的点,如果有这个文件夹就不需要新建了)。在新建的 .vscode 文件夹里新建两个文件 tasks.json 和 launch.json,文件内容如下:


tasks.json 文件

    "version": "2.0.0", 

    "tasks": [ 

        { 

            "label": "build", 

            "type": "shell", 

            "command":"cargo", 

            "args": ["build"] 

        } 

    ] 

}


launch.json 文件(适用在 Windows 系统上)

    "version": "0.2.0", 

    "configurations": [ 

        { 

            "name": "(Windows) 启动", 

            "preLaunchTask": "build", 

            "type": "cppvsdbg", 

            "request": "launch", 

            "program": "${workspaceFolder}/target/debug/${workspaceFolderBasename}.exe", 

            "args": [], 

            "stopAtEntry": false, 

            "cwd": "${workspaceFolder}", 

            "environment": [], 

            "externalConsole": false 

        }, 

        { 

            "name": "(gdb) 启动", 

            "type": "cppdbg", 

            "request": "launch", 

            "program": "${workspaceFolder}/target/debug/${workspaceFolderBasename}.exe", 

            "args": [], 

            "stopAtEntry": false, 

            "cwd": "${workspaceFolder}", 

            "environment": [], 

            "externalConsole": false, 

            "MIMode": "gdb", 

            "miDebuggerPath": "这里填GDB所在的目录", 

            "setupCommands": [ 

                { 

                    "description": "为 gdb 启用整齐打印", 

                    "text": "-enable-pretty-printing", 

                    "ignoreFailures": true 

                } 

            ] 

        } 

    ] 

}


launch.json 文件(适用在 Linux 系统上)

{

    "version": "0.2.0",

    "configurations": [

        {

            "name": "Debug",

            "type": "gdb",

            "preLaunchTask": "build",

            "request": "launch",

            "target": "${workspaceFolder}/target/debug/${workspaceFolderBasename}",

            "cwd": "${workspaceFolder}"

        }

    ]

}


launch.json 文件(适用在 Mac OS 系统上)

{

    "version": "0.2.0",

    "configurations": [

        {

            "name": "(lldb) 启动",

            "type": "cppdbg",

            "preLaunchTask": "build",

            "request": "launch",

            "program": "${workspaceFolder}/target/debug/${workspaceFolderBasename}",

            "args": [],

            "stopAtEntry": false,

            "cwd": "${workspaceFolder}",

            "environment": [],

            "externalConsole": false,

            "MIMode": "lldb"

        }

    ]

}


然后点击 VSCode 左栏的 "运行"。


如果你使用的是 MSVC 选择 "(Windows) 启动"。


如果使用的是 MinGW 且安装了 GDB 选择"(gdb)启动",gdb 启动前请注意填写 launch.json 中的 "miDebuggerPath"。


程序就会开始调试运行了。运行输出将出现在"调试控制台"中:


在 VSCode 中调试 Rust

调试程序的方法与其它环境相似,只需要在行号的左侧点击红点就可以设置断点,在运行中遇到断点会暂停,以供开发者监视实时变量的值。


再补充几个 cargo 的重要子命令:


cargo clippy: 类似eslint,lint工具检查代码可以优化的地方

cargo fmt: 类似go fmt,代码格式化

cargo tree: 查看第三方库的版本和依赖关系

cargo bench: 运行benchmark(基准测试,性能测试)

cargo udeps(第三方): 检查项目中未使用的依赖

另外 cargo build/run --release 使用 release 编译会比默认的 debug 编译性能提升 10 倍以上,但是 release 缺点是编译速度较慢,而且不会显示 panic backtrace 的具体行号

 



上一篇:java中list中的subList方法
下一篇:Rust 组织管理,多模块

The minute you think of giving up, think of the reason why you held on so long.