< 返回版块

microwood 发表于 2020-10-11 20:38

各位大佬,关于函数传参小弟有一点疑惑,Vec类型按道理来说应该是大小不确定的,在函数中做为参数时应该使用饮用类型 &Vec,但是我在函数中直接使用Vec类型做参数,是可以的,是什么原因呢?还请各位大佬不吝赐教。 例如: fn main(){ let nums = vec!["a".to_string(), "b".to_string()]; print_nums(nums); }

fn print_nums(nums: Vec) { println!("{:?}", nums); }

可以正常的输出a, b 按道理来讲不是应该在编译时提示报错nums大小无法确定吗?

评论区

写评论
作者 microwood 2020-10-12 08:37

感谢指点

--
👇
chirsz-ever: Vec<T> 大小是确定的,它本质上是指向堆内存的指针+len+cap,[T] 才是不确定大小的类型。

可看 https://cheats.rs/#general-purpose-heap-storage

chirsz-ever 2020-10-11 21:28

Vec<T> 大小是确定的,它本质上是指向堆内存的指针+len+cap,[T] 才是不确定大小的类型。

可看 https://cheats.rs/#general-purpose-heap-storage

1 共 2 条评论, 1 页