Rust 教程

浏览27776
更新时间2025-08-27

本章讨论如何从标准输入(键盘)接受值并将值显示到标准输出(控制台)。 在本章中,我们还将讨论传递命令行参数。

读取器和写入器类型

Rust 的输入和输出标准库功能围绕两个特征进行组织 −

  • Read
  • Write
Sr.No 特征 & 描述 示例
1

Read

实现 Read 的类型具有面向字节输入的方法。 他们被称为读

Stdin,File
2

Write

实现 Write 的类型支持面向字节和 UTF-8 文本输出。 他们被称为写。

Stdout,File

读取特征

读取器是您的程序可以从中读取字节的组件。 示例包括从键盘、文件等读取输入。此特征的 read_line() 方法可用于从文件或标准输入流读取数据,一次一行。

Sr.No 特征 方法 & 描述
1 Read

read_line(&mut line)->Result

读取一行文本并将其附加到 line(字符串)。 返回值是 io::Result,即读取的字节数。

示例 − 从控制台读取 − stdin()

Rust 程序可能必须在运行时接受用户的值。 以下示例从标准输入(键盘)读取值并将其打印到控制台。

fn main(){
   let mut line = String::new();
   println!("Enter your name :");
   let b1 = std::io::stdin().read_line(&mut line).unwrap();
   println!("Hello , {}", line);
   println!("no of bytes read , {}", b1);
}

stdin()函数返回当前进程的标准输入流的句柄,可以对其应用read_line函数。 当遇到行尾字符时,该函数尝试读取输入缓冲区中存在的所有字符。

输出

Enter your name :
Mohtashim
Hello , Mohtashim
no of bytes read , 10

写特征

Write是您的程序可以写入字节的组件。 示例包括将值打印到控制台、写入文件等。此特征的 write() 方法可用于将数据写入文件或标准输出流。

Sr.No 特征 方法 & 描述
1 Write

write(&buf)->Result

将切片 buf 中的一些字节写入底层流。 它返回一个 io::Result,即写入的字节数。

示例 - 写入控制台 - stdout()

print! 或 println! 宏可用于在控制台上显示文本。 不过,您也可以使用write()标准库函数在标准输出中显示一些文本。

让我们考虑一个示例来理解这一点。

use std::io::Write;
fn main() {
   let b1 = std::io::stdout().write("Tutorials ".as_bytes()).unwrap();
   let b2 = std::io::stdout().write(String::from("Point").as_bytes()).unwrap();
   std::io::stdout().write(format!("\nbytes written {}",(b1+b2)).as_bytes()).unwrap();
}

输出

Tutorials Point
bytes written 15

stdout()标准库函数返回当前进程的标准输出流的句柄,可以对其应用write函数。 write() 方法返回一个枚举 Result。 unwrap() 是一种从枚举中提取实际结果的辅助方法。 如果发生错误,unwrap 方法将发送panic。

注意 − 文件IO将在下一章讨论。

命令行参数

命令行参数在执行之前传递给程序。 它们就像传递给函数的参数。 命令行参数可用于将值传递给 main() 函数。 std::env::args() 返回命令行参数。

示例

以下示例将值作为命令行参数传递给 main() 函数。 该程序以文件名 main.rs 创建.

//main.rs
fn main(){
   let cmd_line = std::env::args();
   println!("No of elements in arguments is :{}",cmd_line.len()); 
   // 打印传递的值总数
   for arg in cmd_line {
      println!("[{}]",arg); //打印作为命令行参数传递的所有值
   }
}

程序编译后将生成一个文件main.exe。 多个命令行参数应以空格分隔。 从终端以 main.exe hello Tutorialspoint 的形式执行 main.exe。

注意 − hello 和 tutorialspoint 是命令行参数。

输出

No of elements in arguments is :3
[main.exe]
[hello]
[tutorialspoint]

输出显示 3 个参数,因为 main.exe 是第一个参数。

示例

以下程序计算作为命令行参数传递的值的总和。 由空格分隔的列表整数值被传递给程序。

fn main(){
   let cmd_line = std::env::args();
   println!("No of elements in arguments is 
   :{}",cmd_line.len()); 
   // 传递的元素总数

   let mut sum = 0;
   let mut has_read_first_arg = false;

   //迭代所有参数并计算它们的总和

   for arg in cmd_line {
      if has_read_first_arg { // 跳过第一个参数,因为它是 exe 文件名
         sum += arg.parse::<i32>().unwrap();
      }
      has_read_first_arg = true; 
      // 将标志设置为 true 以计算后续参数的总和。
   }
   println!("sum is {}",sum);
}

作为 main.exe 1 2 3 4 执行程序时,输出将为 −

No of elements in arguments is :5
sum is 10

相关视频

更多

免费

phpStudy极速入门视频教程
初级phpStudy极速入门视频教程

54.6万次学习

收藏

免费

phpStudy V8 视频教程
初级phpStudy V8 视频教程

38.8万次学习

收藏

免费

小皮面板使用视频教程
初级小皮面板使用视频教程

21.6万次学习

收藏

免费

好课诞生记
初级好课诞生记

7.1万次学习

收藏

精品课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

65万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

41.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

76.8万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

64.2万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

24.4万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

36.3万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

133.5万人学习

热门下载

更多
phpStudy 2018最新版
phpStudy 2018最新版

集成PHP7,16种组合,超全大合集

下载

VC9 32位
VC9 32位

VC9 32位 phpstudy集成安装环境运行库

下载

VC11 32位
VC11 32位

VC11 32位 phpstudy集成安装环境运行库​

下载

php程序员工具箱完整版
php程序员工具箱完整版

程序员工具箱 v1.0 php集成环境

下载

VC14 32位
VC14 32位

VC14 32位 phpstudy安装环境运行库

下载

SublimeText3汉化版
SublimeText3汉化版

中文版,非常好用

下载

Notepad++ Windows版
Notepad++ Windows版

Notepad++ 8.9.7 Windows版官方安装包,适合 Windows 用户进行代码编辑、文本处理、语法高亮和插件扩展配置。

下载