box
只是语法糖,还是可以应用于Box::new
不足的情况?我读到box
不稳定的地方,这是否意味着我只能在每晚的Rust版本中使用它?使用box关键字和Box :: new之间有什么区别?
10
A
回答
29
Box::new
只是一个函数,就像任何其他函数一样。这在任何方面都不是特别的。它肮脏,微微地嗅到非常接近过期日期的奶酪的味道。
box
是魔术,弥补了地面小精灵和小孩的梦想。它穿着最漂亮,最时髦的衣服,并带有新鲜松木的淡淡芳香。
当您执行Box::new(e)
,因为它是一个函数,e
必须彻底评估,并以前建造可以开始通话。如果这意味着在堆栈上分配和填充一个500kB结构,那么它必须在堆栈上分配并填充一个500kB结构,然后将然后传递给Box::new
,其中只有可以在堆上分配空间可能会失败),,然后将500kB复制到堆中。
当您执行box e
,因为它是美好的就像在一个炎热的夏日凉风,编译器可以重新排序的东西,使得它通过在堆中分配的500KB,然后填充500KB结构开始直接堆在。然后就完成了。没有额外的复制,没有咀嚼堆栈空间。没有浪费的努力,如果“分配在堆上”的事情没有解决。
box
是生命,box
是爱;全部冰雹box
!这是一个很好的解决方案,它可以帮助你解决这个问题,你可以使用它来解决这个问题,但是如果你需要一个夜间编译器来获得它的光芒,我会展示自己...)
相关问题
- 1. CSS中的border-box和content-box有什么区别?
- 2. 使用synchronized关键字和锁之间有什么区别
- 3. <T: Trait> Box <T>和&Trait/Box <Trait>有什么区别?
- 4. “Parent c = new Child()”和“Child c = new Child()”之间有什么区别?
- 5. Super thing = new Sub()和Sub thing = new Sub()之间有什么区别?
- 6. Box API和OneCloud API之间的区别是什么,iPhone sdk OneCloud只有?
- 7. “throw”关键字和“Write-Error-ErrorAction Stop”之间有什么区别?
- 8. c和C++之间关键字static有什么区别?
- 9. 在Excel VBA中使用New关键字和调用CreateObject有什么区别?
- 10. C#中new object()和new {}之间的区别是什么?
- 11. resque:failed和resque之间有什么区别:stat:失败的关键?
- 12. New-AzureReservedIP:ReservedIPName和Label之间有什么区别?
- 13. 新的int和new(int)之间的C++有什么区别?
- 14. RXJS,Observable.create和new Observable之间有什么区别?
- 15. new XMLHttpRequest()vs new XMLHttpRequest - 有什么区别?
- 16. `overload`关键字有什么区别吗?
- 17. Microsoft.CompilerServices.AsyncTargetingPack和Microsoft.Bcl.Async之间有什么区别?
- 18. 为什么不使用new关键字
- 19. String和new String有什么区别?
- 20. [NSMutableDictionary dictionary]和[NSMutableDictionary new]有什么区别?
- 21. “new A()”和“A.newInstance()”有什么区别?
- 22. new-itemproperty和set-itemproperty有什么区别?
- 23. `f()`和`new f()`有什么区别?
- 24. `React.createElement(...)`和`new MyComponent()`有什么区别?
- 25. alloc,copy和new有什么区别?
- 26. new Function和vm有什么区别?
- 27. 写'Effect.Highlight(...)'和'new Effect.Highlight(...)'有什么区别?
- 28. new sap.ui.model.odata.ODataModel和read有什么区别?
- 29. `String.class`和`new Class [] {String.class}`有什么区别?
- 30. mvc1和mvc2之间的一些关键区别是什么
是不是'box'关键字应该涵盖自定义分配(即,分配的东西*其他*盒*)?或者它被置换为'<-'? –
'box'将通过推理支持“Box”(*例如*'Rc','Arc',* etc. *)以外的东西。 '< - '是* placement *的当前临时语法,它是相关的,但不同的是:'box'创建一个新的地方来放置一个值然后放在那里,'<-'在* exists *放置(例如,在矢量的末尾)。 –
我喜欢这个答案的每一部分 - 我也学到了一些东西。 –