gpt4 book ai didi

string - 在 Rust 中 .clear() 然后 .push_str(String) 安全吗?

转载 作者:行者123 更新时间:2023-11-29 08:26:08 27 4
gpt4 key购买 nike

我是 Rust 的初学者,正在尝试了解 String 类型。

我只是想知道在 .push_str() 之前执行 .clear() 以推送更大的字符串是否安全,IE:我能保证吗尽管使用相同的指针,但每次系统都能增加容量?是否有(可能有)更好、可能更安全的方法来用更大的字符串覆盖字符串?

最佳答案

一步一步:

  • String::clear()非常安全并设置内部 Vec (因为这就是 String 背后的原因)大小(不是容量)为零
  • String::push_str()然后将您输入的任何内容附加到该零大小 Vec 的末尾,确保在它溢出时重新分配足够的空间。因为类型本身就是 &str你可以非常确定它会起作用。

唯一可能的情况如下:因为String是一个拥有的类型并且 &str是不可变的借用,你的内存使用在push_str()之后将增加 &str 的大小你喂它除非你的StringVec 支持容量大于&str .这是可以预料的。如果您没有,您的代码将(显然)触发 OOM。

所以,是的,它是绝对安全的,老实说,如果你真的有 &mut String,这是最好的方法而不是 String本身:-)

关于string - 在 Rust 中 .clear() 然后 .push_str(String) 安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57835026/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com