Add Destructible for replacing ~const Drop

This commit is contained in:
Deadbeef 2022-03-13 15:04:01 +11:00
parent 051d1176b7
commit 4df2a28aee
No known key found for this signature in database
GPG Key ID: 6D017A96D8E6C2F9
3 changed files with 9 additions and 0 deletions

View File

@ -216,6 +216,7 @@ language_item_table! {
Freeze, sym::freeze, freeze_trait, Target::Trait, GenericRequirement::Exact(0);
Drop, sym::drop, drop_trait, Target::Trait, GenericRequirement::None;
Destructible, sym::destructible, destructible_trait, Target::Trait, GenericRequirement::None;
CoerceUnsized, sym::coerce_unsized, coerce_unsized_trait, Target::Trait, GenericRequirement::Minimum(1);
DispatchFromDyn, sym::dispatch_from_dyn, dispatch_from_dyn_trait, Target::Trait, GenericRequirement::Minimum(1);

View File

@ -571,6 +571,7 @@ symbols! {
deref_target,
derive,
derive_default_enum,
destructible,
destructuring_assignment,
diagnostic,
direct,

View File

@ -792,6 +792,13 @@ impl<T: ?Sized> Unpin for *const T {}
#[stable(feature = "pin_raw", since = "1.38.0")]
impl<T: ?Sized> Unpin for *mut T {}
/// A marker for types that can be dropped.
///
/// The compiler logic for this trait is currently unimplemented.
#[unstable(feature = "const_trait_impl", issue = "67792")]
#[cfg_attr(not(bootstrap), lang = "destructible")]
pub trait Destructible {}
/// Implementations of `Copy` for primitive types.
///
/// Implementations that cannot be described in Rust