From 5ee7287679ccfd97d3a802ff3501422d7acec858 Mon Sep 17 00:00:00 2001 From: Daniel Gurgel Date: Sun, 21 Jul 2024 11:24:31 -0300 Subject: [PATCH] is_unique for ArcArray --- src/impl_arc_array.rs | 23 +++++++++++++++++++++++ src/lib.rs | 3 +++ 2 files changed, 26 insertions(+) create mode 100644 src/impl_arc_array.rs diff --git a/src/impl_arc_array.rs b/src/impl_arc_array.rs new file mode 100644 index 000000000..724cfe51d --- /dev/null +++ b/src/impl_arc_array.rs @@ -0,0 +1,23 @@ +// Copyright 2019 ndarray developers. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use alloc::sync::Arc; +use crate::imp_prelude::*; + +/// Methods specific to `ArcArray`. +/// +/// ***See also all methods for [`ArrayBase`]*** +impl ArcArray +where + D: Dimension, +{ + /// Returns `true` iff the inner `Arc` is not shared. + pub fn is_unique(&mut self) -> bool { + Arc::get_mut(&mut self.data.0).is_some() + } +} diff --git a/src/lib.rs b/src/lib.rs index 380256692..838c70497 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1612,6 +1612,9 @@ mod impl_raw_views; // Copy-on-write array methods mod impl_cow; +// Arc array methods +mod impl_arc_array; + /// Returns `true` if the pointer is aligned. pub(crate) fn is_aligned(ptr: *const T) -> bool {