Có phải box
chỉ là cú pháp đường hoặc có thể áp dụng cho trường hợp sử dụng Box::new
không đủ? Tôi đọc ở đâu đó rằng box
không ổn định, điều đó có nghĩa là tôi chỉ có thể sử dụng nó với các phiên bản Rust hàng đêm?Sự khác nhau giữa việc sử dụng từ khóa hộp và Hộp :: mới là gì?
Trả lời
Box::new
chỉ là một chức năng, giống như bất kỳ chức năng nào khác. Nó không phải là đặc biệt theo bất kỳ cách nào. Đó là grubby và mùi mờ nhạt của rất gần-to-the-hết hạn ngày pho mát.
box
là phép thuật và tạo nên những hình ảnh nền tảng và ước mơ của những đứa trẻ nhỏ. Nó được mặc quần áo tốt nhất, đẹp nhất và mang theo nó mùi hương mờ nhạt của thông tươi cắt.
Khi bạn thực hiện Box::new(e)
, bởi vì nó là một hàm, e
phải được đánh giá và xây dựng hoàn toàn trước nó có thể bắt đầu cuộc gọi. Nếu điều này có nghĩa là phân bổ và điền vào cấu trúc 500kB trên ngăn xếp, thì nó phải phân bổ và lấp đầy cấu trúc 500kB trên ngăn xếp, và sau đó chuyển đến Box::new
, trong đó chỉ sau đó có thể phân bổ không gian trên heap (có thể không thành công), và sau đó sao chép 500kB đó vào heap.
Khi bạn thực hiện box e
, bởi vì nó là tuyệt vời giống như một làn gió mát vào một ngày hè nóng bức, trình biên dịch có thể sắp xếp lại mọi thứ như vậy mà nó bắt đầu bằng cách phân bổ các 500KB trên heap, và sau đó điền cấu trúc 500KB trực tiếp trên heap. Và sau đó nó được thực hiện. Không sao chép thêm, không nhai qua không gian ngăn xếp. Không có nỗ lực lãng phí nếu điều đó "phân bổ trên heap" điều không làm việc ra ngoài.
box
là cuộc sống, box
là tình yêu; tất cả mưa đá box
!
(Và có, bằng văn bản, nó vẫn không ổn định có nghĩa là bạn cần một trình biên dịch hàng đêm để bask trong rạng rỡ của nó. Nhưng sớm, bình minh sẽ đến. Get it? Dawn? Nightly? ... I ' ll hiển thị bản thân mình ...)
- 1. Sự khác nhau giữa việc sử dụng từ khóa Mới và gọi CreateObject trong Excel VBA là gì?
- 2. Sự khác biệt giữa một hộp cấp khối và hộp cấp khối chính là gì?
- 3. Sự khác nhau giữa .click và .change trên hộp kiểm
- 4. Sự khác nhau giữa việc sử dụng tệp extern và #including header là gì?
- 5. Sự khác nhau giữa chuyển đổi và hủy hộp là gì?
- 6. Sự khác nhau giữa từ điển và mảng là gì?
- 7. Sự khác nhau giữa `DialogInterface.dismiss()` và `DialogInterface.cancel()` là gì?
- 8. Sự khác nhau giữa việc sử dụng int [] [] và int [,] là gì?
- 9. Sự khác nhau giữa việc nhấp vào hộp kiểm và gọi hàm '.click()' của nó là gì?
- 10. Sự khác nhau giữa việc sử dụng javac và javax.tools.JavaCompiler là gì?
- 11. Sự khác nhau giữa việc sử dụng DatabaseConfig và Database trong Slick là gì?
- 12. Sự khác nhau giữa AxInterop và Interop là gì?
- 13. Sự khác nhau giữa việc sử dụng onclick của jQuery và thuộc tính onclick là gì?
- 14. Sự khác nhau giữa việc truyền và sử dụng "như" trong C# là gì?
- 15. Sự khác nhau giữa việc sử dụng mẫu @Transactional và Spring là gì?
- 16. Sự khác nhau giữa việc sử dụng MD5.Create và MD5CryptoServiceProvider là gì?
- 17. Sự khác nhau giữa việc sử dụng chuyển hướng Django và HttpResponseRedirect là gì?
- 18. Sự khác nhau giữa res.end() và res.send() là gì?
- 19. Sự khác nhau giữa AlertDialog.builder.setView và Dialog.setContentView là gì?
- 20. Từ khóa hộp làm gì?
- 21. Sự khác nhau giữa LinkedBlockingQueue và ConcurrentLinkedQueue là gì?
- 22. Sự khác nhau giữa hộp thoại "Hộp kiểm (A)" và "Hộp kiểm (B)" trong dự án thiết lập Visual Studio là gì?
- 23. Sự khác nhau giữa QItemDelegate và QStyledItemDelegate là gì?
- 24. Sự khác biệt trong loại giữa việc sử dụng và không sử dụng Đặt từ khóa
- 25. Sự khác nhau giữa Normalize.css và Reset CSS là gì?
- 26. Sự khác nhau giữa spin_lock và raw_spin_lock() là gì?
- 27. Sự khác nhau giữa TFS, SVN và GIT là gì?
- 28. Sự khác nhau giữa truy vấn cụm từ và sử dụng bộ lọc zona là gì?
- 29. Sự khác biệt giữa các mô hình hộp CSS và Latex là gì?
- 30. sự khác nhau giữa từ khóa tham gia và từ khóa kết hợp bên trong trong sql oracle là gì?
Không phải từ khóa 'hộp' phải bao gồm phân bổ tùy chỉnh (ví dụ: phân bổ thứ gì đó * khác * so với' Hộp')? Hay là nó được thay thế bởi vị trí '<-'? –
'box' sẽ hỗ trợ những thứ khác ngoài' Hộp' (* ví dụ * 'Rc',' Arc', * vv *) thông qua suy luận. '<-' là cú pháp tạm thời hiện tại cho * vị trí *, có liên quan, nhưng khác nhau:' hộp' tạo một vị trí mới để đặt một giá trị và sau đó đặt nó vào đó, '<-' đặt một giá trị trong * hiện tại * nơi (như, nói, vào cuối một vectơ). –
Tôi thích mọi phần của câu trả lời này - tôi cũng học được điều gì đó. –