Gopher转Rust辣眼睛语法排行榜

本文是Gopher转向Rust时遇到的辣眼睛语法排行榜,包括分号、感叹号、字符串处理、引用借用等难点,同时提到了Rust中的枚举与匹配、包管理和错误处理等亮点。作者强调了动手实践和理解语言特点的重要性。
摘要由CSDN通过智能技术生成

Gopher转Rust辣眼睛语法排行榜

作者:中弈 - sealos作者,sealer发起人

TOP 10 经常忘记写的分号

fn add_with_extra(x: i32, y: i32) -> i32 {
    let x = x + 1; // 语句
    let y = y + 5; // 语句
    x + y // 表达式
}

当你是从golang刚转过来,你一定经常忘记写分号, 对于 Rust 语言而言,这种基于语句和表达式的方式是非常重要,而且很多时候有了表达式会很方便, 比如不用再写return,或者在匹配的时候使用。

语句执行一些操作无返回值,表达式会求值后返回一个值,所以分号‘;’就很重要了。

TOP 9 感叹号

fn main() {
   println!("hello world"); 
}

这是什么鬼,为什么println后面要加个感叹号,是叫我别打印嘛?其实这是go里面没有的宏,宏可以干很多函数无能为力的事,在很多情况下也非常方便。 比如元编程,可变参数,为指定的类型实现某个特征等,而且编译之前就做好了展开。其本质是生成(替换)一些代码,让我们少写代码。

TOP 8 &str String::from("傻傻分布清楚")

怎么整个字符串这么麻烦。。。

let s = "hello";

s是被硬编码进程序的,大小固定在栈区内存分配,类型为&str.

let s = String::from("hello");
s.push_str(",world!");

s大小不可知道,分配在堆上,类型为String.

TOP 7 引用借用

常规的引用是一个指针类型,指向了对象存储的内存地址。 借用:获取变量的引用。

let x = 5;
let y = &x;

这里y就是x的引用。引用的时候变量的所有权(一夫一妻)不会发生转移,引用=(出轨)。

fn main() {
    let s1 = String::from("hello");

    let len = calculate_length(&s1);

    println!("The length of '{}' is {}.", s1, len);
}

fn calculate_length(s: &String) -> usize {
    s.len()
}

image

TOP 6 Attribute

#[allow(dead_code)]
fn unused_fu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值