创建一个切片并在Rust中附加到它

时间:2017-12-28 12:14:22

标签: rust

在Go中,有makeappend个函数,第一个让你创建一个指定类型,长度和容量的切片,而第二个让你添加一个元素指定的切片。它或多或少与这个玩具示例相似:

func main() {
    // Creates a slice of type int, which has length 0 (so it is empty), and has capacity 5.
    s := make([]int, 0, 5)

    // Appends the integer 0 to the slice.
    s = append(s, 0)

    // Appends the integer 1 to the slice.
    s = append(s, 1)

    // Appends the integers 2, 3, and 4 to the slice.
    s = append(s, 2, 3, 4)
}

Rust是否提供了与切片一起使用的类似功能?

1 个答案:

答案 0 :(得分:7)

Go和Rust切片不同:

  • 在Go中,切片是另一个允许观察和改变容器的容器的代理,
  • 在Rust中,切片是另一个容器中的视图,因此只允许观察容器(尽管它可能允许改变单个元素)。

因此,您无法使用Rust切片插入,追加或删除基础容器中的元素。相反,您需要:

  • 使用对容器本身的可变引用,
  • 设计特征并使用对所述特征的可变引用。

注意:与{Java}不同,Rust std不为其集合提供trait抽象,但如果您认为某些问题对于特定问题,您仍可以自己创建一些。