当前位置: 首页 > news >正文

【零基础学Rust | 基础系列 | Hello, Rust】编写并运行第一个Rust程序

在这里插入图片描述

文章目录

  • 前言
  • 一,创建项目
  • 二,两种编译方式
    • 1. 使用rustc编译器编译
    • 2. 使用Cargo编译
  • 总结

前言

在开始学习任何一门新的编程语言时,都会从编写一个简单的 “Hello, World!” 程序开始。在这一章节中,将会介绍如何在Rust中编写并运行第一个程序。

一,创建项目

在终端中,使用Cargo(Rust的构建系统和包管理器)创建一个新的二进制项目。输入以下命令:

cargo new hello_rust

这将会在当前目录下创建一个名为 “hello_rust” 的新目录,其中包含了一个基本的Rust项目。进入这个新创建的目录:

cd hello_rust

在 “hello_rust” 目录中,会看到一个名为 “src” 的目录和一个 “Cargo.toml” 文件。“src” 目录是源代码的存放位置,“Cargo.toml” 文件是项目的配置文件。

在 “src” 目录中,有一个名为 “main.rs” 的文件,这是Rust程序的入口点。打开 “main.rs” 文件,会看到以下内容:

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

这就是一个简单的 “Hello, World!” 程序。在这个程序中,fn main() 是程序的入口点,println! 是一个宏,用于在控制台打印一行文本。

二,两种编译方式

在Rust中,有两种主要的编译方式:直接使用rustc编译器编译和使用Cargo编译。

1. 使用rustc编译器编译

rustc是Rust的编译器,可以直接编译Rust源代码文件。例如,有一个名为main.rs的Rust源代码文件,可以使用以下命令编译:

rustc main.rs

这将会生成一个名为main(在Windows上是main.exe)的可执行文件。然后,可以直接运行这个可执行文件:

./main

这将会运行程序,并输出结果。

使用rustc编译器编译是一种简单直接的方式,适合于小型的、单文件的Rust程序。但是,对于大型的、多文件的Rust项目,使用rustc编译器编译会变得非常复杂和困难。

2. 使用Cargo编译

Cargo是Rust的构建系统和包管理器,可以自动处理项目的构建过程,包括编译代码、下载依赖包等。

接下来,使用Cargo编译并运行项目,在Cargo.toml所在目录执行下述命令:

cargo run

这将会编译并运行项目,输出结果。

使用Cargo编译是一种更高级的方式,适合于大型的、多文件的Rust项目。Cargo可以自动处理项目的构建过程,使得编译变得更加简单和方便。

总结

使用rustc编译器编译和使用Cargo编译都是编译Rust程序的有效方式,选择哪种方式取决于项目的大小和复杂性。

下一章我们将进入Rust的语法学习,感谢大家关注。

相关文章:

【零基础学Rust | 基础系列 | Hello, Rust】编写并运行第一个Rust程序

文章目录 前言一,创建项目二,两种编译方式1. 使用rustc编译器编译2. 使用Cargo编译 总结 前言 在开始学习任何一门新的编程语言时,都会从编写一个简单的 “Hello, World!” 程序开始。在这一章节中,将会介绍如何在Rust中编写并运…...

代理模式.

前言: 为什么要学习代理模式,因为AOP的底层机制就是动态代理! 代理模式: 静态代理 动态代理 静态代理 抽象角色 : 一般使用接口或者抽象类来实现 真实角色 : 被代理的角色 代理角色 : 代理真实角色 ; 代理真实角色后 , 一…...

BS框架说明

B/S架构 1.B/S框架,意思是前端(Browser 浏览器,小程序、app、自己写的)和服务器端(Server)组成的系统的框架结构 2.B/S框架,也可理解为web架构,包含前端、后端、数据库三大组成部分…...

iOS——Block签名

首先来看block结构体对象Block_layout(等同于clang编译出来的__Block_byref_a_0) #define BLOCK_DESCRIPTOR_1 1 struct Block_descriptor_1 {uintptr_t reserved;uintptr_t size; };#define BLOCK_DESCRIPTOR_2 1 struct Block_descriptor_2 {// requi…...

Flutter 图片选取及裁剪

在开发项目里修改用户头像的功能,涉及到图片选取及裁剪,基本实现步骤如下: 1、pubspec.yaml 添加 image_picker: ^1.0.1 image_cropper: ^4.0.1: dependencies:image_picker: ^1.0.1image_cropper: ^4.0.1flutter:sdk: flutter…...

C语言每日一题:11.《数据结构》链表分割。

题目一: 题目链接: 思路一:使用带头链表 1.构建两个新的带头链表,头节点不存储数据。 2.循环遍历原来的链表。 3.小于x的尾插到第一个链表。 4.大于等于x尾插到第二个链表。 5.进行链表合并,注意第二个链表的尾的下一…...

记一次Oracle归档日志异常增长问题的排查过程

Oracle归档日志是Oracle数据库的重要功能,用于将数据库的重做日志文件(Redo Log)保存到归档日志文件(Archive Log)中。归档日志的作用是提供数据库的备份和恢复功能,以及支持数据库的持续性和数据完整性。 …...

Java设计模式——类之间的关系

1.继承关系(泛化) 类与子类的关系,指一个类继承另外的一个类。 2.实现关系 一个类可以实现多个接口,实现所有接口的功能。 3.依赖关系 类B作为类A方法中的局部变量或者参数出现,表示A依赖B。 4.关联关系 类B作为类A中的成员变量出现&#…...

Dockerfile构建Redis镜像

建立工作目录 [rootlocalhost ~]# mkdir redis [rootlocalhost ~]# cd redis/ 编写Dockerfile文件 [rootlocalhost redis]# vim Dockerfile FROM centos:7 MAINTAINER dddd <dddd163.com> RUN yum -y install epel-release && yum -y install redis RUN sed -i …...

C高级DAY2

1.思维导图 2. 递归实现&#xff0c;输入一个数&#xff0c;输出这个数的每一位 递归实现&#xff0c;输入一个数&#xff0c;输出这个数的二进制c 写一个脚本&#xff0c;包含以下内容&#xff1a; 显示/etc/group文件中第五行的内容创建目录/home/ubuntu/copy切换工作路径到…...

Linux 服务管理

在Linux上&#xff0c;服务管理是指对系统中运行的服务进行启动、停止、重启、监控和配置的过程。以下是一些常用的Linux服务管理工具和命令&#xff1a; 1. systemctl&#xff1a;systemctl 是一个Linux系统服务管理工具&#xff0c;可以管理Systemd初始化系统的服务。常见的…...

问题记录 1 页面初始化触发el-form必填校验

bug: 先编辑table某条数据,然后关闭,再去新增的时候就会触发el-form必填校验, 网上搜了一下是因为 rules里触发的方式为change时,赋值数据的格式不一致导致触发校验, 最后也没找到正确的解决方法, 只能用很low方式去解决了 方案1. 把trigger改为 blur 失焦后触发 方案2. 初始化…...

后端整理(JVM、Redis、反射)

1. JVM 文章仅为自身笔记 详情查看一篇文章掌握整个JVM&#xff0c;JVM超详细解析&#xff01;&#xff01;&#xff01; 1.1 什么是JVM jvm是Java虚拟机 1.2 Java文件的编译过程 程序员编写代码形成.java文件经过javac编译成.class文件再通过JVM的类加载器进入运行时数据…...

1. CUDA中的grid和block

1. CUDA中的grid和block基本的理解 Kernel: Kernel不是CPU&#xff0c;而是在GPU上运行的特殊函数。你可以把Kernel想象成GPU上并行执行的任务。当你从主机&#xff08;CPU&#xff09;调用Kernel时&#xff0c;它在GPU上启动&#xff0c;并在许多线程上并行运行。 Grid: 当你…...

宝存科技企业级固态硬盘解决方案助力企业应用性能提升

企业级固态硬盘解决方案的核心 企业级固态硬盘市场具有产品附加值高、同时进入门槛高的特征&#xff0c;由于国内外巨头和初创企业竞争依然激烈。想要在竞争中脱颖而出&#xff0c;根本还是要靠产品本身的品质和厂商实力。 企业级固态硬盘适用于各类企业应用场景 企业级固态硬盘…...

《练习100》31~35

题目31 # press any key to change color,do you want to try it. Please hurry up!# 第一种使用颜色配置输出 # 向终端输出彩色字符&#xff0c;色彩的设置由目标终端文字系统和转义字符控制&#xff0c;与具体的编程语言无关 # 参数名称 参数值 # 文字效果 0&#xff1a;终端…...

额外题目第4天|132 673 841 127 684 657

132 我发现困难题往往是在中等题的基础上再多了一步 分割最少次数的回文子串 这道题就是在之前动态规划法找回文子串 (leetcode第5题) 的基础上更多 这题还是用动规来写 思路参考代码随想录 dp数组表示的意义是从0到i最少切割的次数 递推公式是 取0到i中间值 j 如果从 j1到…...

HTTP 状态码的分类和含义

HTTP&#xff08;Hypertext Transfer Protocol&#xff09;状态码是由服务器向客户端传输的 HTTP 响应中的一个三位数字代码。它们提供了关于请求的处理状态和结果的信息。以下是一些常见的 HTTP 状态码及其含义&#xff1a; 1xx 信息响应&#xff1a;指示服务器已收到请求&…...

Linux Bridge(网桥)

Linux Bridge简介 Linux Bridge&#xff08;Linux网桥&#xff09;是一个软件层面的网络设备&#xff0c;用于在Linux系统中创建和管理网络桥接。它允许将多个物理或虚拟网络接口连接在一起&#xff0c;以创建一个共享相同网络段的网络。 下面是Linux Bridge的一些关键特点和…...

【数据结构】优先队列

优先队列 API初级实现使用堆实现由下至上的堆有序化&#xff08;上浮&#xff09;由上至下的堆有序化&#xff08;下沉&#xff09;插入和删除元素具体实现 很多情况下我们需要有序的处理输入的元素&#xff0c;但是又不需要输入的元素全部有序&#xff0c;或者不需要一次将它们…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...