extern crate alloc;
use alloc::borrow::Cow;
use alloc::boxed::Box;
use alloc::collections::{BTreeMap, BTreeSet, BinaryHeap, LinkedList, VecDeque};
use alloc::ffi::CString;
use alloc::rc::{self, Rc};
use alloc::string::String;
use alloc::sync::{self, Arc};
use alloc::vec::Vec;
use crate::Defaulted;
impl_defaulted_empty!(String);
impl_defaulted_empty!(CString);
impl<T> Defaulted for Vec<T>
{
#[inline]
fn is_defaulted(&self) -> bool
{
self.is_empty()
}
}
impl<T> Defaulted for BTreeSet<T>
{
#[inline]
fn is_defaulted(&self) -> bool
{
self.is_empty()
}
}
impl<K, V> Defaulted for BTreeMap<K, V>
{
#[inline]
fn is_defaulted(&self) -> bool
{
self.is_empty()
}
}
impl<T> Defaulted for BinaryHeap<T>
{
#[inline]
fn is_defaulted(&self) -> bool
{
self.is_empty()
}
}
impl<T> Defaulted for LinkedList<T>
{
#[inline]
fn is_defaulted(&self) -> bool
{
self.is_empty()
}
}
impl<T> Defaulted for VecDeque<T>
{
#[inline]
fn is_defaulted(&self) -> bool
{
self.is_empty()
}
}
impl_defaulted_deref!(<T> for Box<T>);
impl_defaulted_deref!(<T> for Rc<T>);
impl_defaulted_deref!(<T> for Arc<T>);
impl<T> Defaulted for Cow<'_, T>
where
T: Defaulted + alloc::borrow::ToOwned + ?Sized,
{
#[inline]
fn is_defaulted(&self) -> bool
{
(**self).is_defaulted()
}
}
impl<T: ?Sized> Defaulted for rc::Weak<T>
{
#[inline]
fn is_defaulted(&self) -> bool
{
self.upgrade().is_none()
}
}
impl<T: ?Sized> Defaulted for sync::Weak<T>
{
#[inline]
fn is_defaulted(&self) -> bool
{
self.upgrade().is_none()
}
}