是否box只是语法糖还是可以应用到地方使用的情况下Box::new是不够的?我读到某个box不稳定的地方,这是否意味着我只能将它与夜间Rust版本一起使用?
DK.*_*DK. 39
Box::new只是一个函数,就像任何其他函数一样.它在任何方面都不是特别的.这是一种肮脏的,闻起来非常接近过期的奶酪.
box是神奇的,构成了小精灵和小孩子的梦想.它穿着最好,最时髦的衣服,带着淡淡的松木香气.
执行时Box::new(e),因为它是一个函数,e必须在它可以启动调用之前进行完全评估和构造.如果这意味着在堆栈上分配和填充500kB结构,那么它必须在堆栈上分配并填充500kB结构,然后将其传递给Box::new,只有这样才能在堆上分配空间(可能会失败),并且然后将500kB复制到堆中.
当你执行时box e,因为它在炎热的夏天如同凉爽的微风一样美妙,编译器可以重新排序,使其首先在堆上分配500kB,然后直接在堆上填充500kB结构.然后就完成了.没有额外的复制,没有咀嚼堆栈空间.如果"在堆上分配"的东西无法解决问题,就不会浪费精力.
box是生命,box是爱; 所有的冰雹box!
(是的,在写作时,它仍然不稳定,这意味着你需要一个夜间编译器来晒太阳.但很快,黎明将会到来.得到它?黎明?夜间?......我会展示自己...... .)
| 归档时间: |
|
| 查看次数: |
793 次 |
| 最近记录: |