第一个 Rust 程序

news2024/11/17 17:53:01

目录

  • 必要知识
    • 代码示例
  • Cargo 教程
  • [Rust 输出到命令行](https://www.runoob.com/rust/rust-println.html)
  • 资料

必要知识

Rust 语言代码文件后缀名为 .rs

使用 rustc 命令编译 .rs 文件

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

编译后会生成 可执行文件
例如:
在这里插入图片描述

./runoob    # 执行 runoob

在这里插入图片描述

Rust 的编译工具依赖 C 语言的编译工具,这意味着你的电脑上至少已经存在一个 C 语言的编译环境。如果你使用的是 Linux 系统,往往已经具备了 GCC 或 clang。如果你使用的是 macOS,需要安装 Xcode。如果你是用的是 Windows 操作系统,你需要安装 Visual Studio 2013 或以上的环境(需要 C/C++ 支持)以使用 MSVC 或安装 MinGW + GCC 编译环境(Cygwin 还没有测试)。【安装教程】

查看rust版本

rustc -V   # 注意的大写的 V

代码示例

fn main() {
    println!("Hello World!");
}

在终端输入

D:\coding2022\Rust_1>cargo new greeting 
     Created binary (application) `greeting` package

D:\coding2022\Rust_1>cd ./greeting 

D:\coding2022\Rust_1\greeting>cargo build 
   Compiling greeting v0.1.0 (D:\coding2022\Rust_1\greeting)
    Finished dev [unoptimized + debuginfo] target(s) in 0.32s

D:\coding2022\Rust_1\greeting>cargo run 
    Finished dev [unoptimized + debuginfo] target(s) in 0.00s
     Running `target\debug\greeting.exe`
Hello, world!

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

Cargo 教程

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

Cargo 除了创建工程以外还具备构建(build)工程、运行(run)工程等一系列功能

cargo build //构建
cargo run   //运行

Cargo 还具有获取包、打包、高级构建等功能,详细使用方法参见 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 的具体行号

{ 
    "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 
                } 
            ] 
        } 
    ] 
}

debug相关设置按照官方文档来操作:
https://code.visualstudio.com/docs/languages/rust

https://www.qttc.net/515-how-to-debug-rust-in-vscode-on-mac.html

https://blog.csdn.net/uddiqpl/article/details/108558712

https://www.jianshu.com/p/59b0fb2ab5a3

Rust 输出到命令行

资料

Rust 官方网站:https://www.rust-lang.org/zh-CN
Rust 官方文档:https://doc.rust-lang.org/
Rust Play:https://play.rust-lang.org/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/546606.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

『python爬虫』26. selenium与超级鹰处理复杂验证码的处理(保姆级图文)

目录 1. 图片选择类验证码2. 滑块验证码3. 滑块出错,不加载总结 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 1. 图片选择类验证码 我们这里查看超级鹰文档 图片验证码返回的是一个 dic 结构为 x1,y1…

【SAM系列】An Alternative to WSSS? An Empirical Study of SAM on WSSS Problems

论文链接:https://arxiv.org/pdf/2305.01586.pdf 论文代码:暂无 目的 WSSS旨在弱标签的情况下,生成高质量的分割伪标签,然后用于全监督的语义分割训练。本文探索用SAM来生成伪标签来替代WSSS方案。 为什么不直接用SAM分割而利用…

《面试1v1》synchronized

源码都背下来了,你给我看这 我是 javapub,一名 Markdown 程序员从👨‍💻,八股文种子选手。 面试官: 你好,我看到你的简历上写着你熟悉 Java 中的 “synchronized” 关键字。你能给我讲讲它的作…

chatgpt赋能Python-python3反转字符串

Python3反转字符串技巧:让你的代码更高效! 你是否曾经在编程时需要对字符串进行反转,但却不知从何入手?Python3提供了简单易用的方法,帮助你更快地反转字符串。本文将介绍Python3中字符串反转的方法以及如何在代码中利…

chatgpt赋能Python-python3如何安装numpy

如何安装numpy? 介绍 在Python编程中,NumPy是使用最广泛的库之一。NumPy是数学和科学计算中的核心模块,主要用于处理数字数据,包括数组计算、线性代数、傅里叶变换、随机数生成等任务。在Python编程中,使用NumPy可以…

chatgpt赋能Python-python3小游戏

Python3小游戏:为你的休闲时光增添乐趣 如果你正处于寻找一款简单好玩的小游戏,那么Python3小游戏将是你的不二之选。作为一名有10年Python编程经验的工程师,我可以说Python3小游戏是一款非常有趣、挑战性适中、易于上手的游戏。接下来&…

工作流 jbpm(图文并茂)

文章目录 1 工作流概述2 jBPM概述3 jBPM开发环境搭建及其配置3.1 准备工作3.2 搭建jBPM开发环境3.3 加入jar包 4 系统数据库表介绍4.1 建表4.2 数据库逻辑关系4.2.1 资源库与运行时的表4.2.2 历史数据表 4.3 表结构4.4 流程操作与数表交互说明 5 相关概念6 流程图说明6.0 快速上…

【学习笔记】Rider调试unity【 联调、断点调试等】(决定弃用vscode了)

目录 一 弃用vscode原委二 Rider调试Unity2.1 启动调试2.2 pausepoint 暂停点2.2.1 使用pausepoint2.2.2 pausepoint与breakpoint的区别 2.3 不同run configuration区别 三 Rider编辑3.1 补充 四 总结 转载请注明出处:🔗https://blog.csdn.n…

头歌计算机组成原理实验—运算器设计(4)第4关:16位快速加法器设计

第4关:16位快速加法器设计 实验目的 帮助学生理解成组进位产生函数,成组进位传递函数的概念,熟悉 Logisim 平台子电路的概念,能利用前述实验封装好的4位先行进位子电路以及4位快速加法器子电路构建16位、32位、64位快速加法器&a…

Android 12.0 原生SystemUI下拉通知栏UI背景设置为圆角背景的定制(一)

1.前言 在12.0的系统rom定制化开发中,在原生系统SystemUI下拉状态栏的通知栏的背景是白色四角的背景,由于在产品设计中,需要把四角背景默认改成圆角背景,所以就需要分析系统原生下拉通知栏的每条通知的默认背景,然后通过systemui的通知流程,设置默认下拉状态栏UI中的通知…

java+nodejs+vue+python+php家教信息管理系统

任何网友都可以自由地查看、搜索、发布该家教信息平台的信息。该平台是区别于传统的家教中介的服务平台。学生可以免费查看网站上的家教信息,挑选适合自己的家教;教师可以免费查看网站上的需求信息,挑选适合自己的学生;学生可以发…

chatgpt赋能Python-python3安装scrapy

Python3安装Scrapy:提高爬虫效率的关键 如果你正在从事数据科学、数据分析工作,或者需要收集并存储某些特定网站的数据,Scrapy是一个值得尝试的Python3框架。Scrapy是一个开源的Web爬虫框架,可以方便、高效、快速地对数据进行收集…

Rust每日一练(Leetday0005) 罗马数字、公共前缀、三数之和

目录 13. 罗马数字转整数 Roman to Integer 🌟 14. 最长公共前缀 Longest Common Prefix 🌟 15. 三数之和 3Sum 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日…

Qt/QML编程学习之心得:颜色编码方案RGB+YUV+HSI等(八)

说到Human-Machine Interaction 人机交互界面或者说GUI,那么第一反映可能是窗口、各种控件、各种图片,但是所有这些都还需要一个更底层的内容,那就颜色。不管是窗口还是控件,颜色是其最基本的一个属性。 牛顿三棱镜色散实验,发现光的色彩奥妙:当一束白光通过三棱镜时,它…

chatgpt赋能Python-python3控制摄像头拍照

Python3 控制摄像头拍照 介绍 Python3 是一种高级编程语言,被广泛应用于机器学习、人工智能、Web 开发等领域。控制摄像头拍照是 Python3 中非常常见的需求,例如监控、照片拍摄等等。 如何控制摄像头拍照 在 Python3 中,我们可以利用 Ope…

【高效科研工具(一):chatGPT(各种高效网站大集合)】

高效科研工具(一):chatGPT(各种高效网站大集合) 目录 0、前言 1、chatGPT介绍 2、chatGPT官网 3、各种衍生网站(🤩🤩🤩🤩重头戏!!&a…

插入排序、选择排序、冒泡排序小结(45)

小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 和猫妹学Python,一起趣味学编程。 今日主题 插入排序、选择排序、冒泡排序有什么区别? 原理不同 插入排序是将未排序的元素逐个插入到已排序序列中…

王道考研——计算机网络1.1计算机网络概述

文章目录 0.认识计算机网络1. 计算机网络体系结构1.1概念及功能计算机网络的概念计算机网络的功能计算机网络的发展总结 1.2组成与分类计算机网络的组成计算机网络的分类总结 1.3标准化工作及相关组织(408大纲已删)标准化工作标准化工作的相关组织总结 1…

总结856

学习目标: 月目标:5月(张宇强化前10讲,背诵15篇短文,熟词僻义300词基础词) 周目标:张宇强化前3讲并完成相应的习题并记录,英语背3篇文章并回诵 每日必复习(5分钟&#…

chatgpt赋能Python-python3怎么降到2

Python3如何降级到Python2 Python3是Python语言的最新版本,但是一些旧的项目或者库可能只支持Python2,这就需要将Python3降级到Python2。本文将介绍如何在MacOS和Windows系统上进行Python3到Python2的降级,并提供详细的步骤和注意事项。 Ma…