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

农民  论坛元老 | 2025-2-16 18:02:21 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1017|帖子 1017|积分 3051

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1-1

Hello World

  1. fn main() {
  2.     println!("Hello World!");
  3.     // 动手试一试
  4.     println!("I'm a Rustacean!");
  5. }
复制代码
  1. Hello World!
  2. I'm a Rustacean!
复制代码
  1. 要点1 :println 自带换行符
复制代码
注释

  1. fn main() {
  2.     let x = 5 + /* 90 + */ 5;
  3.     println!("Is `x` 10 or 100? x = {}", x);
  4. }
复制代码
  1. 要点2 : 行注释 // 与 块注释 /**/
  2. 要点1 : 块注释可以嵌套,并且会被检查
复制代码
格式化输出

  1. fn main() {
  2.     println!("{} days", 31);
  3.     println!("{0}, this is {1}. {1}, this is {0}", "Alice", "Bob");
  4.     println!("{subject} {verb} {object}",
  5.              object="the lazy dog",
  6.              subject="the quick brown fox",
  7.              verb="jumps over");
  8.     println!("{} of {:b} people know binary, the other half don't", 1, 2);
  9.    
  10.     // 下面语句输出 "     1",5 个空格后面连着 1。
  11.     println!("{number:>width$}", number=1, width=6);
  12.     // 你可以在数字左边补 0。下面语句输出 "000001"。
  13.     println!("{number:>0width$}", number=1, width=6);
  14.    
  15.     // println! 会检查使用到的参数数量是否正确。
  16.     println!("My name is {0}, {1} {0}", "Bond", "James");
  17.     // 改正 ^ 补上漏掉的参数:"James"
  18.    
  19.     // 动手试一试
  20.            let pi = 3.141592
  21.     println!("Pi is roughly {:.3}", pi)
  22. }
复制代码
  1. 要点1 : 31 默认为i32 31_f64 或 31f64 来改变类型
  2. 要点2 : println!("{}", xxx) 中 {} 可以被变量替换
  3. 要点3 : println!("{0}{1}", xxx, yyy) 位置参数
  4. 要点4 :  命名参数  println!("{subject} {verb}", object="the lazy dog", verb="jumps over");
  5. 要点5 : println!("{:b}", 2) : 冒号可以指定特殊格式 b 为二进制
  6. 要点6 : println!("{number:>width$}", number=1, width=6); {value:format$}  > 右对齐  $用来接收
  7. 要点7 : println!("{number:>0width$}", number=1, width=6); 可以指定填充符
复制代码
  1. 个人拓展 我觉得原文提供的不如第三行我写的
  2. println!("{number:>width$}", number=1, width=6)
  3. println!("{:>width$}", 1, width=6);
  4. println!("{:>6}", 1);
复制代码
调试(Debug)

  1. #[derive(Debug)]
  2. struct Structure(i32);
  3. #[derive(Debug)]
  4. struct Deep(Structure);
  5. fn main() {
  6.     // `Structure` 也可以打印!
  7.     println!("Now {:?} will print!", Structure(3));
  8.    
  9.     // 使用 `derive` 的一个问题是不能控制输出的形式。
  10.     // 假如我只想展示一个 `7` 怎么办?
  11.     println!("Now {:?} will print!", Deep(Structure(7)));
  12. }
复制代码
  1. 要点1 : #[derive(Debug)] `derive` 属性会自动创建所需的实现,使这个 `struct` 能使用 `fmt::Debug` 打印。
  2. 要点2 : 使用 `{:?}` 打印和使用 `{}` 类似 对于能直接输出的类型来说
  3. 要点3 : 元组结构体 Structure(3) 的输出就会直接输出成 Structure(3)
  4. 要点4 : 只想输出一个7 需要手动实现 debug trait 然后使用 {:?} 或者实现 display trait 直接用 {}
复制代码
  1. #[derive(Debug)]
  2. struct Person<'a> {
  3.     name: &'a str,
  4.     age: u8
  5. }
  6. fn main() {
  7.     let name = "Peter";
  8.     let age = 27;
  9.     let peter = Person { name, age };
  10.     // 美化打印
  11.     println!("{:#?}", peter);
  12. }
复制代码
  1. Person {
  2.     name: "Peter",
  3.     age: 27,
  4. }
复制代码
  1. 要点1 : {:#?} 可以美化打印
复制代码
  1. 个人拓展 : # 只能用于 ?
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

农民

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表