public class Vector<T>{
private T[] data;
public Vector new(int capacity) {
// 由于java的泛型,编译不过,当作类似java的伪代码就行
data = new T[capacity];
}
}
萌新在rust中写不出来
1
共 10 条评论, 1 页
public class Vector<T>{
private T[] data;
public Vector new(int capacity) {
// 由于java的泛型,编译不过,当作类似java的伪代码就行
data = new T[capacity];
}
}
萌新在rust中写不出来
评论区
写评论感谢。
--
👇
Aya0wind: 用指针呗,手动分配,Rust目前分配运行时长度数组的方式就是标准库的Vec,你不想套娃实现,那就是按标准库Vec的写法造一个差不多的轮子。
用rust写自己的Vec有详细的教程,比如这个实现 Vec,但是这篇文章还是我入门的时候看的,稍微有点老了,感兴趣的话直接看标准库的源代码,还蛮好读的。
感谢,我大概知道一些了,这个方法的确可以,就是new的时候把capacity作为泛型的一个参数传递,但是无法将const capacity:usize作为函数的参数传递。
--
👇
uno:
用指针呗,手动分配,Rust目前分配运行时长度数组的方式就是标准库的Vec,你不想套娃实现,那就是按标准库Vec的写法造一个差不多的轮子。
用rust写自己的Vec有详细的教程,比如这个实现 Vec,但是这篇文章还是我入门的时候看的,稍微有点老了,感兴趣的话直接看标准库的源代码,还蛮好读的。
--
👇
cyh0: 我听过这个名词,但搞不懂。
我听过这个名词,但搞不懂。
--
👇
uno: Const generics
我就是想实现一个Vec,这就套娃了,只能手动在堆中分配。
--
👇
GipsyU: struct test{ data:Vec, } impl test{ fn new(&mut self)->&Vec { self.data = Vec::new(); &self.data } }
struct test{ data:Vec, } impl test{ fn new(&mut self)->&Vec { self.data = Vec::new(); &self.data } }
Const generics
至少在目前是不行的。
--
👇
cyh0: 我晓得了,这是不行的,必须在编译期确定数组的大小。
我晓得了,这是不行的,必须在编译期确定数组的大小。