Rust语言入门第三篇-输出到命令行+占位符

news2024/11/25 0:51:27

文章目录

  • Rust语言入门第三篇-输出到命令行
    • 介绍
    • println! 和 print!
    • 占位符{}
    • java 对比Rust的输出到命令行+占位符
      • 输出到命令行
      • 占位符

Rust语言入门第三篇-输出到命令行

介绍

在学习 Rust 语言之前,掌握如何将文字输出到命令行几乎是必不可少的。这是因为在学习阶段,向命令行输出结果几乎是唯一的方式。

Rust 提供了两种主要的输出文字的方式:println!()print!()。这两个 “函数” 都可以向命令行输出字符串,但区别在于前者会在输出的末尾附加一个换行符。值得一提的是,println!()print!() 实际上不是函数,而是宏规则(macro)。
大家可能很疑惑为什么 println!("Hello World") 中的 println 后面还有一个 ! 符号,难道 Rust 中所有的函数调用都需要在函数名后面加一个感叹号?显然,并不是这样。事实上,println 并不是一个普通的函数,而是一个宏(macro)规则。

宏是 Rust 中的一种强大的功能,允许在编译时执行元编程,从而可以生成代码。宏允许程序员编写类似于函数调用的语法,但在编译时会展开成更复杂的代码。这种特性使得 Rust 中的宏非常灵活,可以用于各种目的,例如代码重用、模式匹配等。

在 Rust 中,宏的调用需要在宏名后面加上感叹号 !,以区别于普通的函数调用。因此,当我们写 println!("Hello, World!") 时,println 实际上被展开为一系列代码,用于在命令行输出字符串 "Hello, World!",并在最后添加一个换行符。

虽然这里不需要深入了解宏的工作原理,但这种语法的存在使得 Rust 具有强大的元编程能力,可以在编译时生成复杂的代码结构,从而提高代码的灵活性和可维护性。

println! 和 print!

因此,要输出一段文字到命令行,可以使用以下方式:

println!("Hello, World!");

或者:

print!("Hello, World!");

第一个示例中的 println!() 会在输出后自动添加一个换行符,而第二个示例中的 print!() 则不会。

占位符{}

fn main() { 
    let a = 12; 
    println!("a is {}", a); 
}

在 Rust 中,{} 是一种格式化字符串的占位符,用于在打印或格式化文本时插入变量的值。在上面的代码中,println!("a is {}", a) 中的 {} 就是一个占位符,它表示在输出时将变量 a 的值插入到该位置。

具体来说,{} 表示使用默认的格式化方式输出变量的值。对于整数类型,就是以十进制方式输出;对于浮点数类型,就是以小数点形式输出;对于字符串类型,就是直接输出字符串等等。

如果需要指定更复杂的格式,比如控制小数点后的位数,或者指定对齐方式等,可以在 {} 中使用更多的格式化选项。例如:

  • {:.2} 表示保留两位小数;
  • {:<10} 表示左对齐并占据10个字符的宽度;
  • {:^10} 表示居中对齐并占据10个字符的宽度;
  • 等等。

但在上面的代码中,我们只使用了最简单的 {} 占位符,因此打印出的文本将会是 “a is 12”,其中 12 是变量 a 的值。

在这里插入图片描述

可能小伙伴想到多个可以不可,可以的

fn main() {
    let x = 5;
    let v = 5;
    println!("The value of x is:{},The value of v is:{}",x,v);
}

在这里插入图片描述

java 对比Rust的输出到命令行+占位符

如果看到这里为什么我要搞个对比 哈哈哈 凑字

输出到命令行

在 Java 中,System.out.println()System.out.print() 是用于在控制台输出文本的两个方法。它们的区别在于:

  • System.out.println() 输出文本后会自动换行,而 System.out.print() 则不会自动换行,会在同一行继续输出。

而在 Rust 中,println!print! 是用于格式化输出文本的两个宏。它们的区别与 Java 中类似:

  • println! 输出文本后会自动换行,而 print! 则不会自动换行,会在同一行继续输出。

所以,两者的区别在于是否在输出后自动换行。这种区别在编写需要格式化输出的文本时非常有用,可以根据需求选择适合的宏来实现所需的输出行为。

占位符

在 Java 中,常用的占位符主要是通过 String.format() 方法来实现的,通常使用 % 后跟一个字母来表示不同类型的数据。例如:

  • %s 表示字符串
  • %d 表示整数
  • %f 表示浮点数
  • %b 表示布尔值
  • 等等

在 Rust 中,常用的占位符主要是通过格式化宏 format!println!print! 来实现的,使用 {} 来表示占位符,通常会在 {} 中指定变量或者表达式。例如:

  • {} 表示默认格式化输出
  • {:.2} 表示保留两位小数
  • {:<10} 表示左对齐并占据10个字符的宽度
  • {:^10} 表示居中对齐并占据10个字符的宽度
  • 等等

因此,Java 中的占位符是通过特定的符号表示不同类型的数据,而 Rust 中的占位符则更加灵活,可以通过在 {} 中指定格式化选项来实现更复杂的格式化需求。

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

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

相关文章

数据转换 | Matlab基于GADF格拉姆角差场一维数据转二维图像方法

目录 效果分析基本介绍程序设计参考资料获取方式 效果分析 基本介绍 GADF&#xff08;Gramian Angular Difference Field&#xff09;是一种将时间序列数据转换为二维图像的方法之一。它可以用于提取时间序列数据的特征&#xff0c;并可应用于各种领域&#xff0c;如时间序列分…

神经网络模型底层原理与实现9-可解释性

必要性&#xff1a;在金融、医药、自动驾驶方面&#xff0c;模型必须可解释&#xff0c;知道分类错在哪才可以更好的改进模型 解释的两类方法&#xff1a; 1.找出为什么模型认为图片是一只猫的原因 具体操作&#xff1a;a.把图片中的一部分删掉&#xff0c;如果分类错了很多&…

实习记录小程序|基于SSM的实习记录小程序设计与实现(源码+数据库+文档)

知识管理 目录 基于SSM的习记录小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1、小程序端&#xff1a; 2、后台 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕…

Macbook M1 Pro使用brew安装Docker并安装Nacos【超详细图解】

目录 一、安装 Docker 二、修改 Docker 镜像地址 三、拉取镜像-举例 Nacos 1.拉取镜像 2.查看本地镜像 3.删除镜像 四、启动容器 1.启动 Nacos 容器&#xff1a; I.方式一【推荐】 II.方式二【懒人推荐】 2.访问 Nacos Web 控制台 3.进入容器和退出容器 五、配置…

最简单的ubuntu安装docker教程

本文参考自docker官方教程&#xff1a;ubuntu上安装docker 一、安装Docker 第一步&#xff1a;添加Docker官方的GPG密钥 直接复制所有代码&#xff0c;作为一行运行即可 sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/k…

vue快速入门(十七)v-model数据双向绑定修饰符

注释很详细&#xff0c;直接上代码 上一篇 新增内容 v-model.trim 自动去除首尾空格v-model.number 自动转换成数字类型 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" con…

腾讯云、阿里云、华为云优惠券领取教程详解

腾讯云、阿里云和华为云作为国内领先的云服务提供商&#xff0c;为用户提供了丰富的云产品和服务。为了吸引更多的用户&#xff0c;这些平台经常会推出各种优惠活动&#xff0c;其中优惠券就是最常见的一种。本文将详细介绍阿里云、腾讯云和华为云优惠券领取教程&#xff0c;帮…

记一次tp日志泄露到上万用户信息泄露

1、前言 TP框架有一个日志泄露的漏洞&#xff0c;如果我们能够快速的提取日志中的敏感数据&#xff0c;那么就能造成意想不到的危害 2、开始 开始一个url&#xff0c;然后给我们的是一些数据&#xff0c;我们要快速定位里面的敏感信息&#xff0c;就可以搜username,name,pass…

路线选择 | 用ZStack Cloud替代升级VMware

2024年&#xff0c;被博通收购后的VMware全面走向订阅模式&#xff0c;VMware将各产品线改为以VVEP/VVS/VVF/VCF四大基础订阅包并叠加组件的模式进订阅制服&#xff0c;从永久授权改为1/3/5年订阅&#xff0c;且订阅制后售卖规则也进行了调整。 对于用户来讲&#xff0c;VMwar…

【MATLAB源码-第38期】基于OFDM的块状导频和梳状导频误码率性能对比,以及LS/LMMSE两种信道估计方法以及不同调制方式对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 块状导频和梳状导频都是用于无线通信系统中信道估计的方法。 块状导频&#xff1a; 定义&#xff1a; 在频域上&#xff0c;块状导频是连续放置的一组导频符号。这意味着所有的导频符号都集中在一个短的时间段内发送。 优点…

短剧小程序系统开发,让短剧观看与创作更加便捷。短剧系统源码搭建

一、目前短剧发展趋势 1. 市场规模&#xff1a;根据数据来看&#xff0c;2023年中国微短剧市场规模达到了373.9亿元&#xff0c;同比上升了267.65%。预计2024年市场规模将超过500亿元。这一市场规模的增长速度非常显著&#xff0c;显示出短剧行业的巨大潜力和发展前景。 2. 投…

2011年认证杯SPSSPRO杯数学建模A题(第二阶段)客机水面迫降时的姿态全过程文档及程序

2011年认证杯SPSSPRO杯数学建模 A题 客机水面迫降时的姿态 原题再现&#xff1a; 2009 年 1 月 15 日下午&#xff08;美国东部时间&#xff09;&#xff0c;US Airways 所属第 1549 航班&#xff08;空中客车 A320 客机&#xff09;在起飞后不久在纽约哈德逊河紧急迫降。经及…

大象机器人发布智能遥操作机械臂组合myArm MC,加速具身智能研究与发展!

在全球工业自动化和智能化加速发展的今天&#xff0c;机器人行业正经历着翻天覆地的变化。具身智能研究&#xff0c;作为人工智能领域的关键分支&#xff0c;正努力在精准动作控制、高层次自主决策能力以及自然人机交互体验上赋予机器人新的能力。 在此背景下&#xff0c;大象机…

自然语言处理NLP关键知识点

大家好&#xff0c;在人工智能出现之前&#xff0c;机器智能处理结构化的数据&#xff0c;例如 Excel 里的数据。但是网络中大部分的数据都是非结构化的&#xff0c;例如文章、图片、音频、视频等。在非结构数据中&#xff0c;文本的数量是最多的&#xff0c;他虽然没有图片和视…

基于springboot实现洗衣店订单管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现洗衣店订单管理系统演示 摘要 随着信息互联网信息的飞速发展&#xff0c;无纸化作业变成了一种趋势&#xff0c;针对这个问题开发一个专门适应洗衣店业务新的交流形式的网站。本文介绍了洗衣店订单管理系统的开发全过程。通过分析企业对于洗衣店订单管理系统…

蓝桥杯-数组切分

问题描述 已知一个长度为 N 的数组: A1,A2,A3,...AN 恰好是1~ N的一个排列。现 在要求你将 4 数组切分成若干个 (最少一个,最多 N 个)连续的子数组,并且 每个子数组中包含的整数恰好可以组成一段连续的自然数。 例如对于 4 1,3,2,4,一共有 5 种切分方法: 1324:每个单独的数显然…

在 Flutter App 中使用 GPS 定位

现代手机上&#xff0c;不论是苹果 iPhone 还是安卓 Android&#xff0c;都配备了强大的定位能力。 定位主要通过卫星和地面基站提供的信号&#xff0c;获得不同精度的定位信息。 通过手机的操作系统&#xff0c;可以获取这些定位信息。这是手机操作系统给应用层提供的能力。…

C#在后台自动化截图指定网站并保存图片

先安装PuppeteerSharp的库 然后调用如下方法 private async Task ScreenShotAsync(string url){//using var browserFetcher new BrowserFetcher();//await browserFetcher.DownloadAsync();await using var browser await Puppeteer.LaunchAsync(new LaunchOptions { Headle…

计算机网络-TCP连接建立阶段错误应对机制

错误现象 丢包 网络问题&#xff1a;网络不稳定可能导致丢包&#xff0c;例如信号弱或干扰强。带宽限制可能导致路由器或交换机丢弃包&#xff0c;尤其是在高流量时段。网络拥塞时&#xff0c;多个数据流竞争有限的资源&#xff0c;也可能导致丢包。缓冲区溢出&#xff1a;TC…

2024年【T电梯修理】证考试及T电梯修理模拟考试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 T电梯修理证考试考前必练&#xff01;安全生产模拟考试一点通每个月更新T电梯修理模拟考试题题目及答案&#xff01;多做几遍&#xff0c;其实通过T电梯修理作业模拟考试很简单。 1、【多选题】《特种设备安全法》规定…