Skip to content

Decide the intended relationship between core::$module, alloc::$module, std::$module #434

Open
@dtolnay

Description

@dtolnay

All of the following designs are in use for various standard library modules:

  1. core::$modulealloc::$modulestd::$module
  2. core::$modulealloc::$module = ∅, (core::$modulealloc::$module) ⊆ std::$module
  3. something else, intentionally
  4. 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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions