Open
Description
All of the following designs are in use for various standard library modules:
core::$module
⊆alloc::$module
⊆std::$module
core::$module
∩alloc::$module
= ∅, (core::$module
∪alloc::$module
) ⊆std::$module
- something else, intentionally
- something else, unintentionally
Is one of these a good design that should ideally be getting applied for all modules?
design 1 | core::alloc |
alloc::alloc |
std::alloc |
---|---|---|---|
Allocator |
☑️ | ☑️ | ☑️ |
GlobalAlloc |
☑️ | ☑️ | ☑️ |
Layout |
☑️ | ☑️ | ☑️ |
Global |
☑️ | ☑️ | |
alloc |
☑️ | ☑️ | |
System |
☑️ | ||
set_alloc_error_hook |
☑️ |
design 2 | core::sync |
alloc::sync |
std::sync |
---|---|---|---|
atomic |
☑️ | ☑️ | |
Arc |
☑️ | ☑️ | |
Weak |
☑️ | ☑️ | |
Mutex |
☑️ | ||
mpsc |
☑️ |
design 3 | core::panic |
alloc::panic |
std::panic |
---|---|---|---|
Location |
☑️ | ☑️ | |
UnwindSafe |
☑️ | ☑️ | |
PanicInfo |
☑️ | deprecated | |
PanicMessage |
☑️ | ||
PanicHookInfo |
☑️ | ||
catch_unwind |
☑️ |
design 4 | core::ffi::c_str |
alloc::ffi::c_str |
std::ffi::c_str |
---|---|---|---|
CStr |
☑️ | ☑️ | |
FromBytesUntilNulError |
☑️ | ☑️ | |
FromBytesWithNulError |
☑️ | ☑️ | |
Bytes (bug?) |
☑️ | ||
CString |
☑️ | ☑️ | |
FromVecWithNulError |
☑️ | ☑️ | |
IntoStringError |
☑️ | ☑️ | |
NulError |
☑️ | ☑️ |
Some other examples where an item in core::$module
and/or alloc::$module
does not appear in std::$module
:
core::char::encode_utf8_raw
core::char::encode_utf16_raw
core::error::Source
core::ffi::va_list
core::iter::InPlaceIterable
core::iter::SourceIter
core::iter::TrustedFused
core::iter::TrustedRandomAccess
core::iter::TrustedRandomAccessNoCoerce
core::ops::Receiver
core::ptr::Thin
core::ptr::Unique
core::slice::memchr
core::slice::GetManyMutError
core::slice::SlicePattern
core::str::next_code_point
core::str::utf8_char_width
core::panicking
core::range
core::ub_checks
core::unicode