-
Notifications
You must be signed in to change notification settings - Fork 13.6k
Open
Labels
A-boxArea: Our favorite opsem complicationArea: Our favorite opsem complicationC-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCCategory: An issue tracking the progress of sth. like the implementation of an RFCT-libs-apiRelevant to the library API team, which will review and decide on the PR/issue.Relevant to the library API team, which will review and decide on the PR/issue.
Description
Feature gate: #![feature(thin_box)]
This is a tracking issue for ThinBox
for making heap allocated DSTs which only occupy 1 pointer on the stack.
Public API
Note: This API is expected to grow to match Box
as necessary over time. The initial API is the minimum needed for basic usage for error handling.
pub struct ThinBox<T: ?Sized> { /* ... */ }
impl<T> ThinBox<T> {
pub fn new(value: T) -> Self;
}
impl<Dyn: ?Sized> ThinBox<Dyn> {
pub fn new_unsize<T>(value: T) -> Self
where
T: Unsize<Dyn>;
}
impl<T: ?Sized + Debug> Debug for ThinBox<T> { /* ... */ }
impl<T: ?Sized + Display> Display for ThinBox<T> { /* ... */ }
impl<T: ?Sized + Error> Error for ThinBox<T> { /* ... */ }
impl<T: ?Sized> Deref for ThinBox<T> { type Target = T; /* ... */ }
impl<T: ?Sized> DerefMut for ThinBox<T> { /* ... */ }
impl<T: ?Sized> Drop for ThinBox<T> { /* ... */ }
unsafe impl<T: ?Sized + Send> Send for ThinBox<T> {}
unsafe impl<T: ?Sized + Sync> Sync for ThinBox<T> {}
Steps / History
- Implementation: #Add new ThinBox type for 1 stack pointer wide heap allocated trait objects #90066
- Added
Send
andSync
: ImplementSend
andSync
forThinBox<T>
#98595 - Final comment period (FCP)
- Stabilization PR
Unresolved Questions
- Can ThinBox be made covariant? (comment)
- Yes, with more opaque type-casting: Make
ThinBox<T>
covariant inT
#98585
- Yes, with more opaque type-casting: Make
- Is
const_allocate
fleshed out and tested enough to justify it being used in thinbox's impl? Does T-lang agree we'll always have some way to procedurally generate allocations in const eval? (in contrast to declaratively via constants, statics or anonymous promoteds)
stepancheg, luaneko, TennyZhuang, ahlinc, marc0246 and 14 moreMartinNowak, dead-claudia and musjj
Metadata
Metadata
Assignees
Labels
A-boxArea: Our favorite opsem complicationArea: Our favorite opsem complicationC-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCCategory: An issue tracking the progress of sth. like the implementation of an RFCT-libs-apiRelevant to the library API team, which will review and decide on the PR/issue.Relevant to the library API team, which will review and decide on the PR/issue.