1小时放弃Rust(1): Hello-World

news2024/12/21 18:46:50

1. 目的

最近被公司项目的 crash 问题折磨, 一方面是crash位置不固定,难以复现;另一方面是代码、sdk、人员众多,我拿不到所有代码。排查效率非常低效,各种会议满天飞,问题实质毫无进展。希望在达到被辞退的节点前学会 Rust,写一些不可能存在内存踩踏问题的 sdk,拯救自己。

2. 安装 Rust

https://www.rust-lang.org/learn/get-started

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

3. 更新 Rust

rustup update

4. 创建 Hello-World 工程

mkdir -p ~/play/rust
cd $_
cargo new hello-world

5. 编译和运行

cd hello-world
cargo build
cargo run

6. 目录结构

刚执行 cargo new hello-world 时,文件和目录结构为:

➜  hello-world git:(main) ✗ tree -L 3
.
├── Cargo.lock
├── Cargo.toml
└── src
    └── main.rs

2 directories, 3 files

也可以 cargo clean 来恢复。

7. main.rs

fn main() {
    println!("Hello, world!");
}

解释:

  • fn: Rust 语言中的关键字。function 的意思
  • main(): 入口函数
  • println!: 宏. 暂时不理解,当做函数使用;会自动添加换行符的打印.

8. Cargo.toml

[package]
name = "hello-world"
version = "0.1.0"
edition = "2021"

[dependencies]

完全看不懂。 忽略。

9. Cargo run 在运行什么

cargo run
./target/debug/hello-world

10. 不用 cargo 呢?

hello.rs:

fn main()
{
    println!("Hello, Rust");
    println!("What a day!");
}

编译:

rustc hello.rs

运行:

./hello

结果:

Hello, Rust
What a day!

11. 总结

给出了 Rust 的安装,以及创建、运行、简单理解 hello-world 工程的步骤。

12. 参考

  • https://www.rust-lang.org/learn/get-started
  • https://blog.csdn.net/weixin_50964512/article/details/130138973

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

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

相关文章

CS 144 check4: interoperating in the world

Lectures Note 略 Exercises 执行cmake --build build --target check_webget发现超出12s了。 1、回看check0的代码,似乎不需要关闭写入方向,于是注释掉(关键) 2、将request的变量类型从string转为string_view(顺手…

现代风格VUE3易支付用户控制中心

适用系统 彩虹易支付 技术栈 vitevue3elementuiplusphp 亮点 独立前端代码,扩展开发,不改动系统文件,不影响原版升级 支持功能订制 界面预览

go语言zero框架中启动脚本.sh的编写与配置

在Go语言项目中,编写启动脚本 (.sh 文件) 通常用于自动化启动Go程序、配置环境变量、执行一些初始化任务或处理不同环境下的配置。下面是编写和配置启动脚本的步骤。 ### 1. 基本的 .sh 启动脚本 假设你已经在 Go 中编写了应用程序并编译为二进制文件,启…

React,Antd实现文本输入框话题添加及删除的完整功能解决方案

最终效果就是实现该输入框: 添加话题时,话题自动插入到输入框前面多文本输入框左侧间距为话题的宽度多行文本时,第二行紧接开头渲染删除文本时,如果删除到话题,再次删除,话题被删除 首先构造div结构 cons…

坑人 C# MySql.Data SDK

一:背景 1. 讲故事 为什么说这东西比较坑人呢?是因为最近一个月接到了两个dump,都反应程序卡死无响应,最后分析下来是因为线程饥饿导致,那什么原因导致的线程饥饿呢?进一步分析发现罪魁祸首是 MySql.Data,这就让人无语了,并且反馈都是升级了MySql.Data驱动引发,接下…

(五)FT2232HL高速调试器之--三步实现STM32的VSCODE在线仿真工程搭建

对于单片机开发,rtthread studios 与 vscode,鱼与熊掌可以兼得否,其实是可以的,下面通过三个步骤,实现基于FT2232HL高速调试器的,stm32的VSCODE在线仿真工程的搭建。 1、软件下载与VSCODE插件安装配置 软…

【计算机网络】lab2 Ethernet(链路层Ethernet frame结构细节)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀计算机网络_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2.…

鸿蒙项目云捐助第十讲鸿蒙App应用分类页面二级联动功能实现

鸿蒙项目云捐助第十讲鸿蒙App应用分类页面二级联动功能实现 在之前的教程中完成了分类页面的左右两侧的列表结构,如下图所示。 接下来需要实现左侧分类导航项的点击操作,可以友好的提示用户选择了哪一个文字分类导航项。 一、左侧文字分类导航的处理 …

数字IC后端零基础入门基础理论(Day1)

数字IC后端设计导入需要用到的input数据如下图所示。 数字后端零基础入门系列 | Innovus零基础LAB学习Day9 Netlist: 设计的Gate level(门级)网表。下图所示为一个计数器设计综合后的门级netlist。 从这个netlist中我们看到这个设计顶层的名字叫counte…

如何编译Opencv +ffmpeg linux 明明安装了ffmpeg但是opencv就是找不到

想要编译opencvffmpeg: 1.安装ffmpeg 随便位置(具体看ffmpeg 编译安装) 执行下面命令,其中/usr/local/ffmpeg/lib/pkgconfig是你实际的ffmpeg路径 export PKG_CONFIG_PATH$PKG_CONFIG_PATH:/usr/local/ffmpeg/lib/pkgconfig2.下载…

三维视频融合在数字孪生中的应用

一、在提升监控效率与决策准确性方面的应用 改善监控视角与理解:在数字孪生场景下,三维视频融合技术能够将监控视频与三维环境相结合。例如在城市安防、工业生产、大型活动等场景中,形成连续、实时、动态的三维全景拼接图。这解决了传统监控…

语音识别失败 chrome下获取浏览器录音功能,因为安全性问题,需要在localhost或127.0.0.1或https下才能获取权限

环境: Win10专业版 谷歌浏览器 版本 131.0.6778.140(正式版本) (64 位) 问题描述: 局域网web语音识别出现识别失败 chrome控制台出现下获取浏览器录音功能,因为安全性问题,需要在…

计算机网络-传输层 TCP协议(上)

目录 报头结构 TCP的可靠传输机制 核心机制一:确认应答 TCP的序号和确认序号 核心机制二:丢包重传 核心机制三:连接管理 建立连接-三次握手 断开连接-四次挥手 核心机制四:滑动窗口 数据包已经抵达, ACK被丢了 数据包就…

【Cadence射频仿真学习笔记】IC设计中电感的分析、建模与绘制(EMX电磁仿真,RFIC-GPT生成无源器件及与cadence的交互)

一、理论讲解 1. 电感设计的两个角度 电感的设计可以从两个角度考虑,一个是外部特性,一个是内部特性。外部特性就是把电感视为一个黑盒子,带有两个端子,如果带有抽头的电感就有三个端子,需要去考虑其电感值、Q值和自…

AutoSarOS中调度表的概念与源代码解析

--------AutoSarOS调度表的概念 一、AutoSarOS 是什么以及调度表的重要性 AutoSar(Automotive Open System Architecture)是汽车行业的一个开放式软件架构标准哦。它就像是一种大家都遵循的规则,能让不同的软件供应商一起合作开发汽车软件,这样软件就能被重复使用,开发效…

对golang的io型进程进行off-cpu分析

背景: 对于不能占满所有cpu核数的进程,进行on-cpu的分析是没有意义的,因为可能程序大部分时间都处在阻塞状态。 实验例子程序: 以centos8和golang1.23.3为例,测试下面的程序: pprof_netio.go package m…

VS项目,在生成的时候自动修改版本号

demo示例:https://gitee.com/chenheze90/L28_AutoVSversion 可通过下载demo运行即可。 原理:通过csproject项目文件中的Target标签,实现在项目编译之前对项目版本号进行修改,避免手动修改; 1.基础版 效果图如下 部…

springcloud-gateway获取应用响应信息乱码

客户端通过springcloud gateway跳转访问tongweb上的应用,接口响应信息乱码。使用postman直接访问tongweb上的应用,响应信息显示正常。 用户gateway中自定义了实现GlobalFilter的Filter类,在该类中获取了上游应用接口的响应信息,直…

node安装,npm安装,vue-cli安装以及element-ui配置项目

node.js Node.js主要用于开发高性能、高并发的网络服务器,特别适合构建HTTP服务器、实时交互应用(如聊天室)和RESTful API服务器等。‌它使用JavaScript语言,基于Chrome V8引擎,提供模块化开发和丰富的npm生态系统&…

新能源汽车充电需求攀升,智慧移动充电服务有哪些实际应用场景?

在新能源汽车行业迅猛发展的今天,智慧充电桩作为支持这一变革的关键基础设施,正在多个实际应用场景中发挥着重要作用。从公共停车场到高速公路服务区,从企业园区到住宅小区,智慧充电桩不仅提供了便捷的充电服务,还通过…