预计阅读时间: 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
评论