pub struct ProgramPlacementConstraint { /* private fields */ }Expand description
Requested program placement constraints.
An empty engine list means any engine is allowed.
§Examples
use tenferro_runtime::ProgramPlacementConstraint;
assert!(ProgramPlacementConstraint::any().allowed_engines().is_empty());Implementations§
Source§impl ProgramPlacementConstraint
impl ProgramPlacementConstraint
Sourcepub fn any() -> Self
pub fn any() -> Self
Return an unconstrained placement request.
§Examples
use tenferro_runtime::ProgramPlacementConstraint;
let any = ProgramPlacementConstraint::any();
assert!(any.allowed_engines().is_empty());
assert!(any.storage_class().is_none());Sourcepub fn new(
allowed_engines: impl Into<Arc<[EngineId]>>,
storage_class: Option<StorageClass>,
) -> Result<Self, PlacementConstraintError>
pub fn new( allowed_engines: impl Into<Arc<[EngineId]>>, storage_class: Option<StorageClass>, ) -> Result<Self, PlacementConstraintError>
Build a placement constraint from engine preferences and storage class.
§Examples
use tenferro_runtime::{EngineId, ProgramPlacementConstraint, StorageClass};
let engine = EngineId::new("tenferro.cpu")?;
let storage = StorageClass::new("tenferro.storage.host")?;
let constraint = ProgramPlacementConstraint::new(vec![engine.clone()], Some(storage.clone()))?;
assert_eq!(constraint.allowed_engines(), &[engine]);
assert_eq!(constraint.storage_class(), Some(&storage));§Errors
Returns PlacementConstraintError::DuplicateEngine when the same
engine appears more than once.
Sourcepub fn allowed_engines(&self) -> &[EngineId]
pub fn allowed_engines(&self) -> &[EngineId]
Return the allowed engines in preference order.
§Examples
use tenferro_runtime::{EngineId, ProgramPlacementConstraint};
let engine = EngineId::new("tenferro.cpu")?;
let constraint = ProgramPlacementConstraint::new(vec![engine.clone()], None)?;
assert_eq!(constraint.allowed_engines(), &[engine]);Sourcepub fn storage_class(&self) -> Option<&StorageClass>
pub fn storage_class(&self) -> Option<&StorageClass>
Return the requested storage class, if one was supplied.
§Examples
use tenferro_runtime::{ProgramPlacementConstraint, StorageClass};
let storage = StorageClass::new("tenferro.storage.host")?;
let constraint = ProgramPlacementConstraint::new(Vec::new(), Some(storage.clone()))?;
assert_eq!(constraint.storage_class(), Some(&storage));Trait Implementations§
Source§impl Clone for ProgramPlacementConstraint
impl Clone for ProgramPlacementConstraint
Source§fn clone(&self) -> ProgramPlacementConstraint
fn clone(&self) -> ProgramPlacementConstraint
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 Debug for ProgramPlacementConstraint
impl Debug for ProgramPlacementConstraint
Source§impl Hash for ProgramPlacementConstraint
impl Hash for ProgramPlacementConstraint
Source§impl PartialEq for ProgramPlacementConstraint
impl PartialEq for ProgramPlacementConstraint
Source§fn eq(&self, other: &ProgramPlacementConstraint) -> bool
fn eq(&self, other: &ProgramPlacementConstraint) -> bool
Tests for
self and other values to be equal, and is used by ==.impl Eq for ProgramPlacementConstraint
impl StructuralPartialEq for ProgramPlacementConstraint
Auto Trait Implementations§
impl Freeze for ProgramPlacementConstraint
impl RefUnwindSafe for ProgramPlacementConstraint
impl Send for ProgramPlacementConstraint
impl Sync for ProgramPlacementConstraint
impl Unpin for ProgramPlacementConstraint
impl UnsafeUnpin for ProgramPlacementConstraint
impl UnwindSafe for ProgramPlacementConstraint
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