获得徽章 20
- #青训营笔记创作活动#
1月25日 day35
今日学习主要学习了使用命令行工具 hz 生成代码,此外还使用 JWT 扩展完成登陆认证和授权访问,并且使用 Gorm 访问 MySQL 数据库。学习了开发gorm 操作 mysql 完成持久化,因此在登陆之前,需要对用户进行注册,服务器需要在用户第一次登陆的时候,验证用户账号和密码,并签发 jwt token。展开16 - 什么是Rust中的借用?
将一个引用变量传递给一个函数,便把所有权交出去了,后续想继续访问与使用这个变量将受到限制。为了解决这个问题,Rust发明了引用类型的借用机制。
fn main() {
let mut s1 = String::from("yishulun.com");
let len = calculate_length(&s1); // 只读借用
println!("Length of '{}' is {}.", s1, len);
// Length of 'yishulun.com' is 12.
let len = modify_str(&mut s1); // 可变借用
println!("Length of '{}' is {}.", s1, len);
// Length of 'yishulun.com.' is 13.
}
fn calculate_length(s: &String) -> usize {
s.len()
}
fn modify_str(s: &mut String) -> usize {
s.push_str(".");
s.len()
}
在调用calculate_length函数时,发生了只读借用,只是给这个函数借用一个s1,用完了马上归还;在调用modify_str函数时,发生了可变借用,这时候的参数类型不是&String,是&mut String,代表可变。
因为要明确引用类型的数据的所有权,一石激起千层浪,很多方面都与传统编程语言不太一样了。
#欢喜迎兔年#展开评论1
![[嘿哈]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_67.9ceed33.png)