diff --git a/Cargo.toml b/Cargo.toml index cf28d62..fd46845 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,3 +17,4 @@ serde_json = "1.0" [features] default = [] serde = ["dep:serde"] +coerce_unsized = [] diff --git a/src/lib.rs b/src/lib.rs index 1f50069..90c680e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -44,11 +44,15 @@ #![allow(unsafe_code)] #![deny(missing_docs)] +#![cfg_attr(feature = "coerce_unsized", feature(coerce_unsized))] + use core::cell::UnsafeCell; use core::cmp; use core::fmt; use core::fmt::{Debug, Display}; use core::marker::PhantomData; +#[cfg(feature = "coerce_unsized")] +use core::ops::CoerceUnsized; use core::ops::{Deref, DerefMut}; use core::ptr::NonNull; use core::sync::atomic; @@ -65,6 +69,9 @@ pub struct AtomicRefCell { value: UnsafeCell, } +#[cfg(feature = "coerce_unsized")] +impl, U> CoerceUnsized> for AtomicRefCell {} + /// An error returned by [`AtomicRefCell::try_borrow`](struct.AtomicRefCell.html#method.try_borrow). pub struct BorrowError { _private: (),