use super::TryNew;
use crate::error::OutOfMemory;
use std_alloc::sync::Arc;
impl<T> TryNew for Arc<T> {
type Value = T;
#[inline]
fn try_new(value: T) -> Result<Self, OutOfMemory>
where
Self: Sized,
{
#[cfg(arc_try_new)]
return Arc::try_new(value).map_err(|_| {
let bytes = core::mem::size_of::<(usize, usize, T)>();
OutOfMemory::new(bytes)
});
#[cfg(not(arc_try_new))]
return Ok(Arc::new(value));
}
}
#[cfg(test)]
mod test {
use super::{Arc, TryNew};
#[test]
fn try_new() {
<Arc<_> as TryNew>::try_new(4).unwrap();
}
}