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 *放置(例如,在矢量的末尾)。 –
我喜歡這個答案的每一部分 - 我也學到了一些東西。 –