Releases: rust-lang/rust
Rust 1.86.0
Language
- Stabilize upcasting trait objects to supertraits.
- Allow safe functions to be marked with the
#[target_feature]attribute. - The
missing_abilint now warns-by-default. - Rust now lints about double negations, to catch cases that might have intended to be a prefix decrement operator (
--x) as written in other languages. This was previously a clippy lint,clippy::double_neg, and is now available directly in Rust asdouble_negations. - More pointers are now detected as definitely not-null based on their alignment in const eval.
- Empty
repr()attribute applied to invalid items are now correctly rejected. - Inner attributes
#![test]and#![rustfmt::skip]are no longer accepted in more places than intended.
Compiler
- Debug-assert that raw pointers are non-null on access.
- Change
-Oto mean-C opt-level=3instead of-C opt-level=2to match Cargo's defaults. - Fix emission of
overflowing_literalsunder certain macro environments.
Platform Support
- Replace
i686-unknown-redoxtarget withi586-unknown-redox. - Increase baseline CPU of
i686-unknown-hurd-gnuto Pentium 4. - New tier 3 targets:
{aarch64-unknown,x86_64-pc}-nto-qnx710_iosock. For supporting Neutrino QNX 7.1 withio-socketnetwork stack.{aarch64-unknown,x86_64-pc}-nto-qnx800. For supporting Neutrino QNX 8.0 (no_std-only).{x86_64,i686}-win7-windows-gnu. Intended for backwards compatibility with Windows 7.{x86_64,i686}-win7-windows-msvcare the Windows MSVC counterparts that already exist as Tier 3 targets.amdgcn-amd-amdhsa.x86_64-pc-cygwin.{mips,mipsel}-mti-none-elf. Initial bare-metal support.m68k-unknown-none-elf.armv7a-nuttx-{eabi,eabihf},aarch64-unknown-nuttx, andthumbv7a-nuttx-{eabi,eabihf}.
Refer to Rust's platform support page for more information on Rust's tiered platform support.
Libraries
- The type of
FromBytesWithNulErrorinCStr::from_bytes_with_nul(bytes: &[u8]) -> Result<&Self, FromBytesWithNulError>was changed from an opaque struct to an enum, allowing users to examine why the conversion failed. - Remove
RustcDecodableandRustcEncodable. - Deprecate libtest's
--logfileoption. - On recent versions of Windows,
std::fs::remove_filewill now remove read-only files.
Stabilized APIs
{float}::next_down{float}::next_up<[_]>::get_disjoint_mut<[_]>::get_disjoint_unchecked_mutslice::GetDisjointMutErrorHashMap::get_disjoint_mutHashMap::get_disjoint_unchecked_mutNonZero::count_onesVec::pop_ifsync::Once::waitsync::Once::wait_forcesync::OnceLock::wait
These APIs are now stable in const contexts:
hint::black_boxio::Cursor::get_mutio::Cursor::set_positionstr::is_char_boundarystr::split_atstr::split_at_checkedstr::split_at_mutstr::split_at_mut_checked
Cargo
- When merging, replace rather than combine configuration keys that refer to a program path and its arguments.
- Error if both
--packageand--workspaceare passed but the requested package is missing. This was previously silently ignored, which was considered a bug since missing packages should be reported. - Deprecate the token argument in
cargo loginto avoid shell history leaks. - Simplify the implementation of
SourceIDcomparisons. This may potentially change behavior if the canonicalized URL compares differently in alternative registries.
Rustdoc
Compatibility Notes
- The
wasm_c_abifuture compatibility warning is now a hard error. Users ofwasm-bindgenshould upgrade to at least version 0.2.89, otherwise compilation will fail. - Remove long-deprecated no-op attributes
#![no_start]and#![crate_id]. - The future incompatibility lint
cenum_impl_drop_casthas been made into a hard error. This means it is now an error to cast a field-less enum to an integer if the enum implementsDrop. - SSE2 is now required for "i686" 32-bit x86 hard-float targets; disabling it causes a warning that will become a hard error eventually. To compile for pre-SSE2 32-bit x86, use a "i586" target instead.
Internal Changes
These changes do not affect any public interfaces of Rust, but they represent significant improvements to the performance or internals of rustc and related tools.
- Build the rustc on AArch64 Linux with ThinLTO + PGO. The ARM 64-bit compiler (AArch64) on Linux is now optimized with ThinLTO and PGO, similar to the optimizations we have already performed for the x86-64 compiler on Linux. This should make it up to 30% faster.
Rust 1.85.1
Rust 1.85.0
Language
- The 2024 Edition is now stable. See the edition guide for more details.
- Stabilize async closures See RFC 3668 for more details.
- Stabilize
#[diagnostic::do_not_recommend] - Add
unpredictable_function_pointer_comparisonslint to warn against function pointer comparisons - Lint on combining
#[no_mangle]and#[export_name]attributes.
Compiler
- The unstable flag
-Zpolymorphizehas been removed, see rust-lang/compiler-team#810 for some background.
Platform Support
Refer to Rust's platform support page for more information on Rust's tiered platform support.
Libraries
-
Panics in the standard library now have a leading
library/in their path -
std::env::home_dir()on Windows now ignores the non-standard$HOMEenvironment variableIt will be un-deprecated in a subsequent release.
Stabilized APIs
BuildHasherDefault::newptr::fn_addr_eqio::ErrorKind::QuotaExceededio::ErrorKind::CrossesDevices{float}::midpoint- Unsigned
{integer}::midpoint NonZeroU*::midpoint- impl
std::iter::Extendfor tuples with arity 1 through 12 FromIterator<(A, ...)>for tuples with arity 1 through 12std::task::Waker::noop
These APIs are now stable in const contexts:
mem::size_of_valmem::align_of_valLayout::for_valueLayout::align_toLayout::pad_to_alignLayout::extendLayout::arraystd::mem::swapstd::ptr::swapNonNull::newHashMap::with_hasherHashSet::with_hasherBuildHasherDefault::new<float>::recip<float>::to_degrees<float>::to_radians<float>::max<float>::min<float>::clamp<float>::abs<float>::signum<float>::copysignMaybeUninit::write
Cargo
- Add future-incompatibility warning against keywords in cfgs and add raw-idents
- Stabilize higher precedence trailing flags
- Pass
CARGO_CFG_FEATUREto build scripts
Rustdoc
Compatibility Notes
-
rustcno longer treats thetestcfg as a well known check-cfg, instead it is up to the build systems and users of--check-cfg[^check-cfg] to set it as a well known cfg using--check-cfg=cfg(test).This is done to enable build systems like Cargo to set it conditionally, as not all source files are suitable for unit tests. Cargo (for now) unconditionally sets the
testcfg as a well known cfg. [^check-cfg]: https://doc.rust-lang.org/nightly/rustc/check-cfg.html -
Disable potentially incorrect type inference if there are trivial and non-trivial where-clauses
-
std::env::home_dir()has been deprecated for years, because it can give surprising results in some Windows configurations if theHOMEenvironment variable is set (which is not the normal configuration on Windows). We had previously avoided changing its behavior, out of concern for compatibility with code depending on this non-standard configuration. Given how long this function has been deprecated, we're now fixing its behavior as a bugfix. A subsequent release will remove the deprecation for this function. -
Make
core::ffi::c_charsignedness more closely match that of the platform-defaultcharThis changed
c_charfrom ani8tou8or vice versa on many Tier 2 and 3 targets (mostly Arm and RISC-V embedded targets). The new definition may result in compilation failures but fixes compatibility issues with C.The
libccrate matches this change as of its 0.2.169 release. -
Increase
sparcv9-sun-solarisandx86_64-pc-solarisSolaris baseline to 11.4. -
Show
abi_unsupported_vector_typeslint in future breakage reports
Internal Changes
These changes do not affect any public interfaces of Rust, but they represent significant improvements to the performance or internals of rustc and related tools.
Rust 1.84.1
Rust 1.84.0
Language
- Allow
#[deny]inside#[forbid]as a no-op - Show a warning when
-Ctarget-featureis used to toggle features that can lead to unsoundness due to ABI mismatches - Use the next-generation trait solver in coherence
- Allow coercions to drop the principal of trait objects
- Support
/as the path separator forinclude!()in all cases on Windows - Taking a raw ref (
raw (const|mut)) of a deref of a pointer (*ptr) is now safe - Stabilize s390x inline assembly
- Stabilize Arm64EC inline assembly
- Lint against creating pointers to immediately dropped temporaries
- Execute drop glue when unwinding in an
extern "C"function
Compiler
- Add
--print host-tupleflag to print the host target tuple and affirm the "target tuple" terminology over "target triple" - Declaring functions with a calling convention not supported on the current target now triggers a hard error
- Set up indirect access to external data for
loongarch64-unknown-linux-{musl,ohos} - Enable XRay instrumentation for LoongArch Linux targets
- Extend the
unexpected_cfgslint to also warn in external macros - Stabilize WebAssembly
multivalue,reference-types, andtail-calltarget features - Added Tier 2 support for the
wasm32v1-nonetarget
Libraries
- Implement
From<&mut {slice}>forBox/Rc/Arc<{slice}> - Move
<float>::copysign,<float>::abs,<float>::signumtocore - Add
LowerExpandUpperExpimplementations toNonZero - Implement
FromStrforCStringandTryFrom<CString>forString std::os::darwinhas been made public
Stabilized APIs
Ipv6Addr::is_unique_localIpv6Addr::is_unicast_link_localcore::ptr::with_exposed_provenancecore::ptr::with_exposed_provenance_mut<ptr>::addr<ptr>::expose_provenance<ptr>::with_addr<ptr>::map_addr<int>::isqrt<int>::checked_isqrt<uint>::isqrtNonZero::isqrtcore::ptr::without_provenancecore::ptr::without_provenance_mutcore::ptr::danglingcore::ptr::dangling_mutPin::as_deref_mut
These APIs are now stable in const contexts
AtomicBool::from_ptrAtomicPtr::from_ptrAtomicU8::from_ptrAtomicU16::from_ptrAtomicU32::from_ptrAtomicU64::from_ptrAtomicUsize::from_ptrAtomicI8::from_ptrAtomicI16::from_ptrAtomicI32::from_ptrAtomicI64::from_ptrAtomicIsize::from_ptr<ptr>::is_null<ptr>::as_ref<ptr>::as_mutPin::newPin::new_uncheckedPin::get_refPin::into_refPin::get_mutPin::get_unchecked_mutPin::static_refPin::static_mut
Cargo
Rustdoc
Compatibility Notes
- Enable by default the
LSXtarget feature for LoongArch Linux targets - The unstable
-Zprofileflag (“gcov-style” coverage instrumentation) has been removed. This does not affect the stable flags for coverage instrumentation (-Cinstrument-coverage) and profile-guided optimization (-Cprofile-generate,-Cprofile-use), which are unrelated and remain available. - Support for the target named
wasm32-wasihas been removed as the target is now namedwasm32-wasip1. This completes the transition plan for this target following the introduction ofwasm32-wasip1in Rust 1.78. Compiler warnings on use ofwasm32-wasiintroduced in Rust 1.81 are now gone as well as the target is removed. - The syntax
&pin (mut|const) Tis now parsed as a type which in theory could affect macro expansion results in some edge cases - Legacy syntax for calling
std::archfunctions is no longer permitted to declare items or bodies (such as closures, inline consts, or async blocks). - Declaring functions with a calling convention not supported on the current target now triggers a hard error
- The next-generation trait solver is now enabled for coherence, fixing multiple soundness issues
Rust 1.83.0
Language
- Stabilize
&mut,*mut,&Cell, and*const Cellin const. - Allow creating references to statics in
constinitializers. - Implement raw lifetimes and labels (
'r#ident). - Define behavior when atomic and non-atomic reads race.
- Non-exhaustive structs may now be empty.
- Disallow implicit coercions from places of type
! const externfunctions can now be defined for other calling conventions.- Stabilize
expr_2021macro fragment specifier in all editions. - The
non_local_definitionslint now fires on less code and warns by default.
Compiler
- Deprecate unsound
-Csoft-floatflag. - Add many new tier 3 targets:
Refer to Rust's platform support page for more information on Rust's tiered platform support.
Libraries
- Implement
PartialEqforExitCode. - Document that
catch_unwindcan deal with foreign exceptions without UB, although the exact behavior is unspecified. - Implement
DefaultforHashMap/HashSetiterators that don't already have it. - Bump Unicode to version 16.0.0.
- Change documentation of
ptr::add/subto not claim equivalence withoffset.
Stabilized APIs
BufRead::skip_untilControlFlow::break_valueControlFlow::continue_valueControlFlow::map_breakControlFlow::map_continueDebugList::finish_non_exhaustiveDebugMap::finish_non_exhaustiveDebugSet::finish_non_exhaustiveDebugTuple::finish_non_exhaustiveErrorKind::ArgumentListTooLongErrorKind::DeadlockErrorKind::DirectoryNotEmptyErrorKind::ExecutableFileBusyErrorKind::FileTooLargeErrorKind::HostUnreachableErrorKind::IsADirectoryErrorKind::NetworkDownErrorKind::NetworkUnreachableErrorKind::NotADirectoryErrorKind::NotSeekableErrorKind::ReadOnlyFilesystemErrorKind::ResourceBusyErrorKind::StaleNetworkFileHandleErrorKind::StorageFullErrorKind::TooManyLinksOption::get_or_insert_defaultWaker::dataWaker::newWaker::vtablechar::MINhash_map::Entry::insert_entryhash_map::VacantEntry::insert_entry
These APIs are now stable in const contexts:
Cell::into_innerDuration::as_secs_f32Duration::as_secs_f64Duration::div_duration_f32Duration::div_duration_f64MaybeUninit::as_mut_ptrNonNull::as_mutNonNull::copy_fromNonNull::copy_from_nonoverlappingNonNull::copy_toNonNull::copy_to_nonoverlappingNonNull::slice_from_raw_partsNonNull::writeNonNull::write_bytesNonNull::write_unalignedOnceCell::into_innerOption::as_mutOption::expectOption::replaceOption::takeOption::unwrapOption::unwrap_uncheckedOption::<&_>::copiedOption::<&mut _>::copiedOption::<Option<_>>::flattenOption::<Result<_, _>>::transposeRefCell::into_innerResult::as_mutResult::<&_, _>::copiedResult::<&mut _, _>::copiedResult::<Option<_>, _>::transpose- [
UnsafeCell::get_mut](https://doc.rust-lang.org/stable/cor...
Rust 1.82.0
Language
- Don't make statement nonterminals match pattern nonterminals
- Patterns matching empty types can now be omitted in common cases
- Enforce supertrait outlives obligations when using trait impls
addr_of(_mut)!macros and the newly stabilized&raw (const|mut)are now safe to use with all static items- size_of_val_raw: for length 0 this is safe to call
- Reorder trait bound modifiers after
for<...>binder in trait bounds - Stabilize
+ use<'lt>opaque type precise capturing (RFC 3617) - Stabilize
&raw constand&raw mutoperators (RFC 2582) - Stabilize unsafe extern blocks (RFC 3484)
- Stabilize nested field access in
offset_of! - Do not require
Tto be live when dropping[T; 0] - Stabilize
constoperands in inline assembly - Stabilize floating-point arithmetic in
const fn - Stabilize explicit opt-in to unsafe attributes
- Document NaN bit patterns guarantees
Compiler
- Promote riscv64gc-unknown-linux-musl to tier 2
- Promote Mac Catalyst targets
aarch64-apple-ios-macabiandx86_64-apple-ios-macabito Tier 2, and ship them with rustup - Add tier 3 NuttX based targets for RISC-V and ARM
- Add tier 3 powerpc-unknown-linux-muslspe target
- Improved diagnostics to explain why a pattern is unreachable
- The compiler now triggers the unreachable code warning properly for async functions that don't return/are
-> ! - Promote
aarch64-apple-darwinto Tier 1 - Add Trusty OS target
aarch64-unknown-trustyandarmv7-unknown-trustyas tier 3 targets - Promote
wasm32-wasip2to Tier 2.
Libraries
Stabilized APIs
std::thread::Builder::spawn_uncheckedstd::str::CharIndices::offsetstd::option::Option::is_none_or[T]::is_sorted[T]::is_sorted_by[T]::is_sorted_by_keyIterator::is_sortedIterator::is_sorted_byIterator::is_sorted_by_keystd::future::Ready::into_innerstd::iter::repeat_nimpl<T: Clone> DoubleEndedIterator for Take<Repeat<T>>impl<T: Clone> ExactSizeIterator for Take<Repeat<T>>impl<T: Clone> ExactSizeIterator for Take<RepeatWith<T>>impl Default for std::collections::binary_heap::Iterimpl Default for std::collections::btree_map::RangeMutimpl Default for std::collections::btree_map::ValuesMutimpl Default for std::collections::vec_deque::Iterimpl Default for std::collections::vec_deque::IterMutRc<T>::new_uninitRc<MaybeUninit<T>>::assume_initRc<[T]>::new_uninit_sliceRc<[MaybeUninit<T>]>::assume_initArc<T>::new_uninitArc<MaybeUninit<T>>::assume_initArc<[T]>::new_uninit_sliceArc<[MaybeUninit<T>]>::assume_initBox<T>::new_uninitBox<MaybeUninit<T>>::assume_initBox<[T]>::new_uninit_sliceBox<[MaybeUninit<T>]>::assume_initcore::arch::x86_64::_bextri_u64core::arch::x86_64::_bextri_u32core::arch::x86::_mm_broadcastsi128_si256core::arch::x86::_mm256_stream_load_si256core::arch::x86::_tzcnt_u16core::arch::x86::_mm_extracti_si64core::arch::x86::_mm_inserti_si64core::arch::x86::_mm_storeu_si16core::arch::x86::_mm_storeu_si32core::arch::x86::_mm_storeu_si64core::arch::x86::_mm_loadu_si16core::arch::x86::_mm_loadu_si32core::arch::wasm32::u8x16_relaxed_swizzlecore::arch::wasm32::i8x16_relaxed_swizzlecore::arch::wasm32::i32x4_relaxed_trunc_f32x4core::arch::wasm32::u32x4_relaxed_trunc_f32x4core::arch::wasm32::i32x4_relaxed_trunc_f64x2_zerocore::arch::wasm32::u32x4_relaxed_trunc_f64x2_zerocore::arch::wasm32::f32x4_relaxed_maddcore::arch::wasm32::f32x4_relaxed_nmaddcore::arch::wasm32::f64x2_relaxed_maddcore::arch::wasm32::f64x2_relaxed_nmaddcore::arch::wasm32::i8x16_relaxed_laneselectcore::arch::wasm32::u8x16_relaxed_laneselect- [`core::arch:...
Rust 1.81.0
Language
- Abort on uncaught panics in
extern "C"functions. - Fix ambiguous cases of multiple
&in elided self lifetimes. - Stabilize
#[expect]for lints (RFC 2383), like#[allow]with a warning if the lint is not fulfilled. - Change method resolution to constrain hidden types instead of rejecting method candidates.
- Bump
elided_lifetimes_in_associated_constantto deny. offset_from: always allow pointers to point to the same address.- Allow constraining opaque types during subtyping in the trait system.
- Allow constraining opaque types during various unsizing casts.
- Deny keyword lifetimes pre-expansion.
Compiler
- Make casts of pointers to trait objects stricter.
- Check alias args for well-formedness even if they have escaping bound vars.
- Deprecate no-op codegen option
-Cinline-threshold=.... - Re-implement a type-size based limit.
- Properly account for alignment in
transmutesize checks. - Remove the
box_pointerslint. - Ensure the interpreter checks bool/char for validity when they are used in a cast.
- Improve coverage instrumentation for functions containing nested items.
- Target changes:
- Add Tier 3
no_stdXtensa targets:xtensa-esp32-none-elf,xtensa-esp32s2-none-elf,xtensa-esp32s3-none-elf - Add Tier 3
stdXtensa targets:xtensa-esp32-espidf,xtensa-esp32s2-espidf,xtensa-esp32s3-espidf - Add Tier 3 i686 Redox OS target:
i686-unknown-redox - Promote
arm64ec-pc-windows-msvcto Tier 2. - Promote
loongarch64-unknown-linux-muslto Tier 2 with host tools. - Enable full tools and profiler for LoongArch Linux targets.
- Unconditionally warn on usage of
wasm32-wasi. (see compatibility note below) - Refer to Rust's platform support page for more information on Rust's tiered platform support.
- Add Tier 3
Libraries
- Split core's
PanicInfoand std'sPanicInfo. (see compatibility note below) - Generalize
{Rc,Arc}::make_mut()to unsized types. - Replace sort implementations with stable
driftsortand unstableipnsort. Allslice::sort*andslice::select_nth*methods are expected to see significant performance improvements. See the research project for more details. - Document behavior of
create_dir_allwith respect to empty paths. - Fix interleaved output in the default panic hook when multiple threads panic simultaneously.
- Fix
Command's batch files argument escaping not working when file name has trailing whitespace or periods (CVE-2024-43402).
Stabilized APIs
core::errorhint::assert_uncheckedfs::existsAtomicBool::fetch_notDuration::abs_diffIoSlice::advanceIoSlice::advance_slicesIoSliceMut::advanceIoSliceMut::advance_slicesPanicHookInfoPanicInfo::messagePanicMessage
These APIs are now stable in const contexts:
char::from_u32_unchecked(function)char::from_u32_unchecked(method)CStr::count_bytesCStr::from_ptr
Cargo
- Generated
.cargo_vcs_info.jsonis always included, even when--allow-dirtyis passed. - Disallow
package.license-fileandpackage.readmepointing to non-existent files during packaging. - Disallow passing
--release/--debugflag along with the--profileflag. - Remove
lib.pluginkey support inCargo.toml. Rust plugin support has been deprecated for four years and was removed in 1.75.0.
Compatibility Notes
-
Usage of the
wasm32-wasitarget will now issue a compiler warning and request users switch to thewasm32-wasip1target instead. Both targets are the same,wasm32-wasiis only being renamed, and this change to the WASI target is being done to enable removingwasm32-wasiin January 2025. -
We have renamed
std::panic::PanicInfotostd::panic::PanicHookInfo. The old name will continue to work as an alias, but will result in a deprecation warning starting in Rust 1.82.0.core::panic::PanicInfowill remain unchanged, however, as this is now a different type.The reason is that these types have different roles:
std::panic::PanicHookInfois the argument to the panic hook in std context (where panics can have an arbitrary payload), whilecore::panic::PanicInfois the argument to the#[panic_handler]in no_std context (where panics always carry a formatted message). Separating these types allows us to add more useful methods to these types, such asstd::panic::PanicHookInfo::payload_as_str()andcore::panic::PanicInfo::message(). -
The new sort implementations may panic if a type's implementation of
Ord(or the given comparison function) does not implement a total order as the trait requires.Ord's supertraits (PartialOrd,Eq, andPartialEq) must also be consistent. The previous implementations would not "notice" any problem, but the new implementations have a good chance of detecting inconsistencies, throwing a panic rather than returning knowingly unsorted data.
Internal Changes
These changes do not affect any public interfaces of Rust, but they represent significant improvements to the performance or internals of rustc and related tools.
Rust 1.80.1
Rust 1.80.0
Language
- Document maximum allocation size
- Allow zero-byte offsets and ZST read/writes on arbitrary pointers
- Support C23's variadics without a named parameter
- Stabilize
exclusive_range_patternfeature - Guarantee layout and ABI of
Resultin some scenarios
Compiler
- Update cc crate to v1.0.97 allowing additional spectre mitigations on MSVC targets
- Allow field reordering on types marked
repr(packed(1)) - Add a lint against never type fallback affecting unsafe code
- Disallow cast with trailing braced macro in let-else
- Expand
for_loops_over_fallibleslint to lint on fallibles behind references. - self-contained linker: retry linking without
-fuse-ld=lldon CCs that don't support it - Do not parse CVarArgs (
...) as a type in trait bounds - Improvements to LLDB formatting #124458 #124500
- For the wasm32-wasip2 target default to PIC and do not use
-fuse-ld=lld - Add x86_64-unknown-linux-none as a tier 3 target
- Lint on
foo.into_iter()resolving to&Box<[T]>: IntoIterator
Libraries
- Add
size_ofandsize_of_valandalign_ofandalign_of_valto the prelude - Abort a process when FD ownership is violated
- io::Write::write_fmt: panic if the formatter fails when the stream does not fail
- Panic if
PathBuf::set_extensionwould add a path separator - Add assert_unsafe_precondition to unchecked_{add,sub,neg,mul,shl,shr} methods
- Update
c_charon AIX to use the correct type offset_of!no longer returns a temporary- Handle sigma in
str.to_lowercasecorrectly - Raise
DEFAULT_MIN_STACK_SIZEto at least 64KiB
Stabilized APIs
impl Default for Rc<CStr>impl Default for Rc<str>impl Default for Rc<[T]>impl Default for Arc<str>impl Default for Arc<CStr>impl Default for Arc<[T]>impl IntoIterator for Box<[T]>impl FromIterator<String> for Box<str>impl FromIterator<char> for Box<str>LazyCellLazyLockDuration::div_duration_f32Duration::div_duration_f64Option::take_ifSeek::seek_relativeBinaryHeap::as_sliceNonNull::offsetNonNull::byte_offsetNonNull::addNonNull::byte_addNonNull::subNonNull::byte_subNonNull::offset_fromNonNull::byte_offset_fromNonNull::readNonNull::read_volatileNonNull::read_unalignedNonNull::writeNonNull::write_volatileNonNull::write_unalignedNonNull::write_bytesNonNull::copy_toNonNull::copy_to_nonoverlappingNonNull::copy_fromNonNull::copy_from_nonoverlappingNonNull::replaceNonNull::swapNonNull::drop_in_placeNonNull::align_offset<[T]>::split_at_checked<[T]>::split_at_mut_checkedstr::split_at_checkedstr::split_at_mut_checkedstr::trim_asciistr::trim_ascii_startstr::trim_ascii_end<[u8]>::trim_ascii<[u8]>::trim_ascii_start<[u8]>::trim_ascii_endIpv4Addr::BITSIpv4Addr::to_bitsIpv4Addr::from_bitsIpv6Addr::BITSIpv6Addr::to_bitsIpv6Addr::from_bitsVec::<[T; N]>::into_flattened<[[T; N]]>::as_flattened<[[T; N]]>::as_flattened_mut
These APIs are now stable in const contexts: