这是我第三次入门RUST了

92次阅读

共计 1357 个字符,预计需要花费 4 分钟才能阅读完成。

前两次看视频看到一半 就放弃了
这一次看的电子书,说实话比看视频强多了,再动手跟着电子书写写代码,以前好多不懂的知识这次好像都搞懂了
于是不知道哪里来的自信——“我入门 Rust 了”。我会 python js go 想着写点小程序应该可以的
谁曾想出师未捷身先死,跟着电子书写的第一个小程序
args 的类型是 Vec<String> 是个 vector 是个集合 数据存放在堆上,由于没有实现 copy trait , 在不获得其所有权的情况下
以引用的形式传入 parse_config 函数
但是当我看到 parse_config 的函数签名 args 的类型是 &[String] 时 我凌乱了,想不通
然后百度 数组 数组切片 vector
然后一小时就过去了
use std::{fs, env};
fn main() {
let args: Vec<String> = env::args().collect();
let (query, filename) = parse_config(&args);
let contents = fs::read_to_string(filename)
.expect("Something went wrong reading the file");

println!("With text:n{}", contents);
}
fn parse_config(args: &[String]) -> (&str, &str) {
let query = &args[1];
let filename = &args[2];
(query, filename)
}复制代码

真正学编程的人从来不提学编程
也不会提教程例子,都是直接从实际项目入手的没接触过 rust,感觉语法融合了 c ++,js,go 就是个形参实参的区别 & 在内存操作里只是个变量值传递,并非变量地址传递。我这是半吊子意 ** 入门 rust 电子书看的哪一本,我试试看能不能入 RUST 学习路线太陡峭了,还是先把 java 学好吧。

想不通
然后百度 数组 数组切片 vector
然后一小时就过去了

这里,换成 Google 甚至 Bing,并建议屏蔽 CSDN.PHP 是世界上最好的语言这语法我也已经第三次被挡在门外了!!!我已经第五次入门了 let args: Vec<String> = env::args().collect(); // 这应该是指针, 非传值, 这玩意的含义是你义的, 单一指针地址是没有任何意义的
(args: &[String]) -> (&str, &str) // 这是告诉编译器这指针应该怎样解析. 不爽你也可以把它换成 int32, 当然
以上是我个人理解, 欢迎探讨. 人生苦短,我学汇编你知道 Vec 占几个字节吗,String 占几个字节吗这应该是 Type coercions 的一种:
&T or &mut T to &U if T implements Deref<Target = U>.
Vec<T> 实现了 Deref trait,它可以在需要时自动被转换为 &[T] 类型 &args 是一个 &Vec<T> 类型,当它被传给 parse_config 函数时,自动通过 Deref 转换成了 &[T]使用引用是因为只有引用类型的实参才会触发自动解引用
这里的 parse_config(&args)复制代码就相当于 parse_config(args.deref())复制代码

正文完
 0