正在加载...

RUST学习笔记-2-输出输入

技术杂货铺  ·  2025-11-04

预计阅读时间: 15.3 分钟
3832 字250 字/分
本文内容较新·2周前更新
最后更新: 2025年11月04日

2.1 简单输出

学习一个新的语言,当然不得不先搞一个老生常谈的问题

"HelloWorld"

而在rust中,这段代码是这样的

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

并且在Rust中,有和Java类似的变量声明方式

比如我希望声明一个变量,但我不想指定它的类型,可以用let语句来让编译器自己识别

var a = 12;
let a = 12;

并且,rust有和C类似的占位符

fn main() {
    let a = 12;
    println!("a is {}",a);
    //如果想输出两次a的话,可以这样
    
    println!("a is {0},and a is{0}",a};
    //就可以把后面的参数当作一个数组,而括号内填入下标
    
    //若果我需要真的输出“{”和“}”怎么办呢?,那就需要使用转义字符
    println!("{{}}");
}

2.2详细输出

这是Rust的一个区别于其他语言的鲜明特点,可以输出详细的调试信息,,比如打印变量的名字之类的

比如,我们可以在代码最前端输入

#[derive(Debug)]

来启动调试输出模式,这允许我们可以使用{:?}和{:#?}来输出详细的调试信息

#[derive(Debug)]
struct Person {
    name: String,
    age: u32,
}

fn main() {
    let person = Person {
        name: "Alice".to_string(),
        age: 25,
    };
    
    // 使用 {:?} 进行调试输出
    println!("{:?}", person);
    // 输出: Person { name: "Alice", age: 25 }
    
    // 使用 {:#?} 进行美化调试输出
    println!("{:#?}", person);
    // 输出:
    // Person {
    //     name: "Alice",
    //     age: 25,
    // }
}

当然,我们还可以用dbg!(&xxx)来输出变量名称以及变量值

#[derive(Debug)]
struct Point {
    x: i32,
    y: i32,
}

fn main() {
    let point = Point { x: 10, y: 20 };
    
    // 调试时查看变量值
    dbg!(&point);  // 输出: [src/main.rs:10] &point = Point { x: 10, y: 20 }
    
    println!("Point: {:?}", point);
}

当然,也可以像Java一样输出错误信息

#[derive(Debug)]
enum Error {
    NotFound,
    PermissionDenied,
}

fn handle_error(err: Error) {
    eprintln!("发生错误: {:?}", err);  // 输出错误信息
}

2.3 输入

在C中,我们可以使用scanf函数来读取控制台输入,在Java中,我们可以通过Scanner来获取输出,而在rust中貌似更复杂了一点,需要使用“std::io:stdin”标准输入流,来获取输入的文字和数据

use std::io::stdin;

fn main(){
    let mut str = String::new();
    stdin().read_line(&mut str).unwrap();
    println!("Your input line is \n {},str");

}


2.4 从命令参数输入

如果我们需要从命令的参数中读取数据的话,我们就需要使用“std::env::args()”来读取输入的内容

比如我希望从指令中输入两个数字并作加法的话

fn main(){
    let mut args = std::env::args();
    args.next;
    let a = args.next().unwrap().trim().parse::<i32>().unwrap();
    let b = args.next().unwrap().trim().parse::<i32>().unwrap();
    println!("{} + {} = {}",a,b,a+b);
}

我们如果要将其编译为一个add的可执行文件,那么我们输入

./add 100 200

100 + 200 = 300


评论
正在加载验证组件