RUST 学习日记 第4课 ——Rust规范

RUST 学习日记 第4课 ——Rust规范

0x00 回顾

上一节咱们了解了Rust的常见IDE,选择一款好的IDE可以让你写代码时事半功倍哦~。这节咱们了解下Rust的常见的一些规范和约定。学习一门编程语言就好比学习一门外语,要“入乡随俗”,尊重这门语言的习惯。

0x01 程序入口点

咱们已经来到第四节了,大家应该也发现了,每次创建项目都会生成一个默认的函数——main,当然在Java中叫方法。这个main函数就是这个程序的入口点,对于所有的二进制可执行文件来说,main函数是必要的,没有它程序则没有执行入口,也就无法执行了。

fn main(){

}

简单了解下它的构造。声明函数以fn开头,fnfunction的简写,然后再紧跟着函数名称main,再加上参数,由于main函数没有参数,所以不需要声明参数,然后再跟上花括号,花括号里就可以写代码了。

PS:关于函数将会在后续章节中详细介绍,这里了解即可。

0x02 main函数的参数和返回值

看到这里,如果你了解过其它语言肯定会想,Rust中的main方法竟然没有参数,也没有返回值。是不是有点儿颠覆了你的“三观”。

fn main() {
    for arg in std::env::args()
    {
        println!("{}", arg);
    }

    // 返回值,默认返回是0
    std::process::exit(0);
}

其实,在Rust中有专门的函数对入参做处理——std::env::args(),他可以接收所有参数。大家可以点进源码看下注释,注释写的很详细。关于函数的返回值,可以使用std::process::exit(0);返回,其中的入参就是返回值了。

0x03 命名规范

1、蛇形命名法(Snake Case)

文件名: 例如:hello_world.rs、main_xxx.rs

变量名:例如:zhangsan_name

函数名:例如:func_name()

2、大驼峰命名法(Camel Case)

结构体:例如:struct ExampleStruct { name: String}

enum类型:例如:enum IpAddress {IPV4(u8,u8,u8,u8)}

3、其它

关联常量:全部大写,例如:NAME、AGE

连接符Cargo默认把连接符-”转换成下划线_

语句:跟C,Java语言等一样,每行语句结束都要添加;

PS:Rust也不建议以-rs”或“_rs”为后缀来命名包名,如果以此来命名,会强制性的将此后缀去掉。

0x04 标准输出

在前面的文章中,咱们都了解了使用println!去打印内容,现在具体介绍下它。

在Rust中常见的输出指令有如下红框圈出的四种。下图来自Rust官方文档。

RUST 学习日记 第4课 ——Rust规范_第1张图片

printprintln 的区别就是多了一个lnprint是输出内容(不换行),println是输出内容并且换行。同理,eprinteprintln是一样的。

Q:printeprint有什么区别呢?

如果你在代码中运行发现不了区别。那还是看文档吧。

RUST 学习日记 第4课 ——Rust规范_第2张图片

文档中写道,输出由stderr来代替了stdout,那就很清晰了。有其它语言基础的同学应该清楚这个问题。简单介绍下这俩的区别:

stdout : 标准输出设备。默认是行缓冲的,它的输出数据会保存在一个buffer中,当换行的时候会输出到屏幕。如果程序转向输出到文件,它则会输出到文件里面。

stderr : 标准错误输出设备 。默认是无缓冲的,会直接输出数据。如果程序转向输出到文件,它则依然会输出到屏幕。

咱们就用文件做个测试,上代码:

fn main() {
    println!("我是 println!");
    eprintln!("我是 eprintln!");
}

RUST 学习日记 第4课 ——Rust规范_第3张图片

右侧蓝框:两行数据都打印了,看不出区别。

左侧红框:输出到test.txt文件,在终端输出了eprintln打印的内容,在文件中输出println的内容。

PS:想更深入的了解它们的区别,大家可以百度下~关于println在后续章节还会再次介绍。

0x05 dbg!

如果你想要调试输出,建议使用dbg!,这个命令是对eprintln的封装。通过它打印内容,输出内容会带文件名,行号等信息,可以很方便的程序调试。建议需要打印日志时使用dbg!来代替println!。下节正式进入Rust的学习。

PS:使用dbg!需要在Rust的1.32.0版本(包含)之后。

示例代码如下:

dbg!("我是一条 debug 日志");

0x06 资料

print文档 - Rust (rust-lang.org)

std::dbg文档 - Rust (rust-lang.org)

0x07 本节源码

004 · StudyRust - 码云 - 开源中国 (gitee.com)

下节预告——变量和常量。

你可能感兴趣的:(RUST 学习日记 第4课 ——Rust规范)