Skip to content

Commit

Permalink
Add Destructible for replacing ~const Drop
Browse files Browse the repository at this point in the history
  • Loading branch information
fee1-dead committed Mar 21, 2022
1 parent 051d117 commit 4df2a28
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 0 deletions.
1 change: 1 addition & 0 deletions compiler/rustc_hir/src/lang_items.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
1 change: 1 addition & 0 deletions compiler/rustc_span/src/symbol.rs
Original file line number Diff line number Diff line change
Expand Up @@ -571,6 +571,7 @@ symbols! {
deref_target,
derive,
derive_default_enum,
destructible,
destructuring_assignment,
diagnostic,
direct,
Expand Down
7 changes: 7 additions & 0 deletions library/core/src/marker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 4df2a28

Please sign in to comment.