通过例子学 rust 个人精简版 1-1

1-1

Hello World
rust 复制代码
fn main() {
    println!("Hello World!");
    // 动手试一试
    println!("I'm a Rustacean!");
}
bash 复制代码
Hello World!
I'm a Rustacean!
bash 复制代码
要点1 :println 自带换行符 
注释
rust 复制代码
fn main() {
    let x = 5 + /* 90 + */ 5;
    println!("Is `x` 10 or 100? x = {}", x);
}
bash 复制代码
要点2 : 行注释 // 与 块注释 /**/ 
要点1 : 块注释可以嵌套,并且会被检查
格式化输出
rust 复制代码
fn main() {
    println!("{} days", 31);
    println!("{0}, this is {1}. {1}, this is {0}", "Alice", "Bob");
    println!("{subject} {verb} {object}",
             object="the lazy dog",
             subject="the quick brown fox",
             verb="jumps over");
    println!("{} of {:b} people know binary, the other half don't", 1, 2);
    
    // 下面语句输出 "     1",5 个空格后面连着 1。
    println!("{number:>width$}", number=1, width=6);
    // 你可以在数字左边补 0。下面语句输出 "000001"。
    println!("{number:>0width$}", number=1, width=6);
    
    // println! 会检查使用到的参数数量是否正确。
    println!("My name is {0}, {1} {0}", "Bond", "James");
    // 改正 ^ 补上漏掉的参数:"James"
    
    // 动手试一试
   	let pi = 3.141592
    println!("Pi is roughly {:.3}", pi)
}
bash 复制代码
要点1 : 31 默认为i32 31_f64 或 31f64 来改变类型
要点2 : println!("{}", xxx) 中 {} 可以被变量替换 
要点3 : println!("{0}{1}", xxx, yyy) 位置参数
要点4 :  命名参数  println!("{subject} {verb}", object="the lazy dog", verb="jumps over");
要点5 : println!("{:b}", 2) : 冒号可以指定特殊格式 b 为二进制
要点6 : println!("{number:>width$}", number=1, width=6); {value:format$}  > 右对齐  $用来接收 
要点7 : println!("{number:>0width$}", number=1, width=6); 可以指定填充符
rust 复制代码
个人拓展 我觉得原文提供的不如第三行我写的 
println!("{number:>width$}", number=1, width=6)
println!("{:>width$}", 1, width=6);
println!("{:>6}", 1);
调试(Debug)
rust 复制代码
#[derive(Debug)]
struct Structure(i32);

#[derive(Debug)]
struct Deep(Structure);

fn main() {
    // `Structure` 也可以打印!
    println!("Now {:?} will print!", Structure(3));
    
    // 使用 `derive` 的一个问题是不能控制输出的形式。
    // 假如我只想展示一个 `7` 怎么办?
    println!("Now {:?} will print!", Deep(Structure(7)));
}
bash 复制代码
要点1 : #[derive(Debug)] `derive` 属性会自动创建所需的实现,使这个 `struct` 能使用 `fmt::Debug` 打印。
要点2 : 使用 `{:?}` 打印和使用 `{}` 类似 对于能直接输出的类型来说
要点3 : 元组结构体 Structure(3) 的输出就会直接输出成 Structure(3)
要点4 : 只想输出一个7 需要手动实现 debug trait 然后使用 {:?} 或者实现 display trait 直接用 {}
rust 复制代码
#[derive(Debug)]
struct Person<'a> {
    name: &'a str,
    age: u8
}
fn main() {
    let name = "Peter";
    let age = 27;
    let peter = Person { name, age };

    // 美化打印
    println!("{:#?}", peter);
}
bash 复制代码
Person {
    name: "Peter",
    age: 27,
}
bash 复制代码
要点1 : {:#?} 可以美化打印
bash 复制代码
个人拓展 : # 只能用于 ?
相关推荐
eggwyw1 分钟前
C++相交链表和反转链表详解
开发语言·c++
Wang's Blog6 分钟前
Java 项目实战:交友项目 - 保存访客记录
java·开发语言·交友
Raas10036 分钟前
AI网关如何接入?MAI Gateway部署实操教程
java·开发语言·人工智能·gateway·ai网关·mai gateway·企业级产品
小小龙学IT42 分钟前
Go 语言 pprof 性能剖析与调优深度解析:把“卡在哪“变成一张可执行的数据图
开发语言·后端·golang
starzy19901 小时前
Scala Set深度解析:为什么大数据开发离不开它?
大数据·开发语言·scala
熊猫钓鱼>_>1 小时前
三方库 NDK 原生模块跨平台适配与调试【鸿蒙心迹】
开发语言·华为·ai编程·harmonyos·鸿蒙·openharmony·鸿蒙心迹
HANDY092002 小时前
从“不照人”到“剂量达标”:扇叶遮挡式UV-C空气消毒的工程边界与可验证评估框架
开发语言·人工智能·嵌入式硬件·智能家居
1024奇点11 小时前
【仓颉语言入门 · 第二篇 第 22 课】
开发语言·ide·开源
Warren2Lynch11 小时前
C4 模型详解:利用 Visual Paradigm 可视化软件架构的综合指南
开发语言·uml
Knight_AL12 小时前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言