我可以在 Rust 中就地构建吗?
Can I in-place construct in Rust?
我喜欢 emplace()
在 C++ 中使用它可以节省移动构建和销毁:例如strings.push_back("abcd"s)
表示
construct, move, destruct the temporary
同时
strings.emplace_back("abcd")
只是 "construct".
可以在 Rust 中实现类似的东西吗(也许通过编译器优化)?通常的 vec.push(String::from("abcd"))
看起来像(在 C 中)
construct + memcpy()
我也对比将字符串推入向量更复杂的情况感兴趣。
我认为 emplace
功能主要由 placement-new feature in C++ and similar unstable feature was removed 几年前的 Rust 支持。因此不,不可能用高级代码做类似的事情。
尽管如此,您仍然可以使用 ptr::write
并在不安全代码中实现相同的行为。
我喜欢 emplace()
在 C++ 中使用它可以节省移动构建和销毁:例如strings.push_back("abcd"s)
表示
construct, move, destruct the temporary
同时
strings.emplace_back("abcd")
只是 "construct".
可以在 Rust 中实现类似的东西吗(也许通过编译器优化)?通常的 vec.push(String::from("abcd"))
看起来像(在 C 中)
construct + memcpy()
我也对比将字符串推入向量更复杂的情况感兴趣。
我认为 emplace
功能主要由 placement-new feature in C++ and similar unstable feature was removed 几年前的 Rust 支持。因此不,不可能用高级代码做类似的事情。
尽管如此,您仍然可以使用 ptr::write
并在不安全代码中实现相同的行为。