pub struct InputSpecializationRequirementsBuilder { /* private fields */ }Expand description
Builder for per-input specialization requirements.
§Examples
use tenferro_runtime::InputSpecializationRequirementsBuilder;
let mut builder = InputSpecializationRequirementsBuilder::new();
builder.dtype(true);
assert!(builder.build()?.specializes_dtype());Implementations§
Source§impl InputSpecializationRequirementsBuilder
impl InputSpecializationRequirementsBuilder
Sourcepub fn new() -> Self
pub fn new() -> Self
Return a builder with no specialization fields enabled.
§Examples
use tenferro_runtime::InputSpecializationRequirementsBuilder;
assert!(!InputSpecializationRequirementsBuilder::new()
.build()
?
.specializes_dtype());Sourcepub fn dtype(&mut self, dtype: bool) -> &mut Self
pub fn dtype(&mut self, dtype: bool) -> &mut Self
Set whether dtype should be specialized.
§Examples
use tenferro_runtime::InputSpecializationRequirementsBuilder;
let mut builder = InputSpecializationRequirementsBuilder::new();
builder.dtype(true);
assert!(builder.build()?.specializes_dtype());Sourcepub fn rank(&mut self, rank: bool) -> &mut Self
pub fn rank(&mut self, rank: bool) -> &mut Self
Set whether rank should be specialized.
§Examples
use tenferro_runtime::InputSpecializationRequirementsBuilder;
let mut builder = InputSpecializationRequirementsBuilder::new();
builder.rank(true);
assert!(builder.build()?.specializes_rank());Sourcepub fn concrete_dimensions(&mut self, axes: impl Into<Vec<u32>>) -> &mut Self
pub fn concrete_dimensions(&mut self, axes: impl Into<Vec<u32>>) -> &mut Self
Set concrete axes whose dimensions should be specialized.
§Examples
use tenferro_runtime::InputSpecializationRequirementsBuilder;
let mut builder = InputSpecializationRequirementsBuilder::new();
builder.rank(true).concrete_dimensions(vec![0]);
assert_eq!(builder.build()?.concrete_dimensions(), &[0]);Sourcepub fn placement(&mut self, placement: PlacementSpecialization) -> &mut Self
pub fn placement(&mut self, placement: PlacementSpecialization) -> &mut Self
Set placement specialization.
§Examples
use tenferro_runtime::{
InputSpecializationRequirementsBuilder, PlacementSpecialization,
};
let mut builder = InputSpecializationRequirementsBuilder::new();
builder.placement(PlacementSpecialization::StorageClass);
assert_eq!(builder.build()?.placement(), PlacementSpecialization::StorageClass);Sourcepub fn layout(&mut self, layout: LayoutSpecialization) -> &mut Self
pub fn layout(&mut self, layout: LayoutSpecialization) -> &mut Self
Set layout specialization.
§Examples
use tenferro_runtime::{InputSpecializationRequirementsBuilder, LayoutSpecialization};
let mut builder = InputSpecializationRequirementsBuilder::new();
builder.rank(true).layout(LayoutSpecialization::ExactStrides);
assert_eq!(builder.build()?.layout(), LayoutSpecialization::ExactStrides);Sourcepub fn alignment_log2(&mut self, alignment_log2: Option<u8>) -> &mut Self
pub fn alignment_log2(&mut self, alignment_log2: Option<u8>) -> &mut Self
Set a required alignment class.
§Examples
use tenferro_runtime::InputSpecializationRequirementsBuilder;
let mut builder = InputSpecializationRequirementsBuilder::new();
builder.alignment_log2(Some(1));
assert_eq!(builder.build()?.alignment_log2(), Some(1));Sourcepub fn build(
self,
) -> Result<InputSpecializationRequirements, InputSpecializationRequirementsError>
pub fn build( self, ) -> Result<InputSpecializationRequirements, InputSpecializationRequirementsError>
Validate and build per-input requirements.
§Examples
use tenferro_runtime::InputSpecializationRequirementsBuilder;
let requirements = InputSpecializationRequirementsBuilder::new().build()?;
assert!(requirements.concrete_dimensions().is_empty());§Errors
Returns InputSpecializationRequirementsError when the requested
fields are internally inconsistent or outside finite lattices.
Trait Implementations§
Source§impl Clone for InputSpecializationRequirementsBuilder
impl Clone for InputSpecializationRequirementsBuilder
Source§fn clone(&self) -> InputSpecializationRequirementsBuilder
fn clone(&self) -> InputSpecializationRequirementsBuilder
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Default for InputSpecializationRequirementsBuilder
impl Default for InputSpecializationRequirementsBuilder
Source§fn default() -> InputSpecializationRequirementsBuilder
fn default() -> InputSpecializationRequirementsBuilder
Returns the “default value” for a type. Read more
Source§impl PartialEq for InputSpecializationRequirementsBuilder
impl PartialEq for InputSpecializationRequirementsBuilder
Source§fn eq(&self, other: &InputSpecializationRequirementsBuilder) -> bool
fn eq(&self, other: &InputSpecializationRequirementsBuilder) -> bool
Tests for
self and other values to be equal, and is used by ==.impl Eq for InputSpecializationRequirementsBuilder
impl StructuralPartialEq for InputSpecializationRequirementsBuilder
Auto Trait Implementations§
impl Freeze for InputSpecializationRequirementsBuilder
impl RefUnwindSafe for InputSpecializationRequirementsBuilder
impl Send for InputSpecializationRequirementsBuilder
impl Sync for InputSpecializationRequirementsBuilder
impl Unpin for InputSpecializationRequirementsBuilder
impl UnsafeUnpin for InputSpecializationRequirementsBuilder
impl UnwindSafe for InputSpecializationRequirementsBuilder
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.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