【问题标题】:Can I in-place construct in Rust?我可以在 Rust 中就地构造吗?
【发布时间】:2020-06-19 18:40:15
【问题描述】:

我喜欢 C++ 中的emplace()ing,它可以节省移动构造和破坏:例如strings.push_back("abcd"s) 表示

建造、移动、破坏临时物

同时 strings.emplace_back("abcd") 只是“构造”。

在 Rust 中可以实现类似的东西(也许通过编译器优化)?通常的 vec.push(String::from("abcd")) 看起来像(在 C 中)

构造 + memcpy()

我还对比仅仅将字符串推入向量更复杂的情况感兴趣。

【问题讨论】:

标签: c++ performance rust in-place emplace


【解决方案1】:

我认为 emplace 功能主要由 C++ 中的 placement-new 功能和类似的不稳定功能 was removed 几年前来自 Rust 的支持。因此不,不可能对高级代码做类似的事情。

尽管如此,您仍然可以使用 ptr::write 并在不安全的代码中实现相同的行为。

【讨论】:

    猜你喜欢
    • 2019-02-25
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 2020-02-01
    • 2018-08-11
    相关资源
    最近更新 更多