pub struct HostWriteGuard<'a, T> { /* private fields */ }Expand description
Closure-scoped write-only mapping of a backend allocation.
§Examples
use tenferro_tensor::{HostAccessError, HostWriteGuard};
let mut written = Vec::new();
{
let mut guard = HostWriteGuard::new(2, |source: &[u32]| {
written.extend_from_slice(source);
Ok::<(), HostAccessError>(())
});
guard.copy_from_slice(&[4, 5]).unwrap();
}
assert_eq!(written, [4, 5]);Implementations§
Source§impl<'a, T> HostWriteGuard<'a, T>
impl<'a, T> HostWriteGuard<'a, T>
Sourcepub fn new<F>(len: usize, copy: F) -> Self
pub fn new<F>(len: usize, copy: F) -> Self
Wrap a backend-native write guard without exposing its concrete type.
§Examples
use tenferro_tensor::{HostAccessError, HostWriteGuard};
let guard = HostWriteGuard::new(0, |_source: &[f32]| Ok::<(), HostAccessError>(()));
assert!(guard.is_empty());§Errors
Construction is infallible. A callback failure such as
HostAccessError::BackendFailure is returned later by
Self::copy_from_slice.
Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Number of elements covered by this write-only mapping.
§Examples
use tenferro_tensor::{HostAccessError, HostWriteGuard};
let guard = HostWriteGuard::new(2, |_source: &[f32]| Ok::<(), HostAccessError>(()));
assert_eq!(guard.len(), 2);Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Returns true when this mapping covers no elements.
§Examples
use tenferro_tensor::{HostAccessError, HostWriteGuard};
let guard = HostWriteGuard::new(0, |_source: &[f32]| Ok::<(), HostAccessError>(()));
assert!(guard.is_empty());Sourcepub fn copy_from_slice(&mut self, source: &[T]) -> Result<(), HostAccessError>
pub fn copy_from_slice(&mut self, source: &[T]) -> Result<(), HostAccessError>
Replace the full mapped allocation contents.
§Examples
use tenferro_tensor::{HostAccessError, HostWriteGuard};
let mut guard = HostWriteGuard::new(1, |_source: &[f32]| Ok::<(), HostAccessError>(()));
guard.copy_from_slice(&[1.0]).unwrap();§Errors
Returns HostAccessError::LengthMismatch when source does not cover
the complete mapping, or the typed backend error returned by the owning
write guard.
Trait Implementations§
Auto Trait Implementations§
impl<'a, T> Freeze for HostWriteGuard<'a, T>
impl<'a, T> !RefUnwindSafe for HostWriteGuard<'a, T>
impl<'a, T> !Send for HostWriteGuard<'a, T>
impl<'a, T> !Sync for HostWriteGuard<'a, T>
impl<'a, T> Unpin for HostWriteGuard<'a, T>
impl<'a, T> UnsafeUnpin for HostWriteGuard<'a, T>
impl<'a, T> !UnwindSafe for HostWriteGuard<'a, T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more