#[non_exhaustive]pub struct CompositeLayout {
pub rule: CompositionRule,
pub member_count: u32,
}Expand description
The composite head’s layout-specific payload (spec § Head Layout-Specific Fields).
Carried by crate::layout::LayoutDescriptor::Composite. See
docs/spec/layouts/composite.md and crate::composite for the full head +
members model and cross-member validation.
§Examples
use hurray_core::layout::{CompositeLayout, CompositionRule, LayoutDescriptor};
let layout = CompositeLayout::new(CompositionRule::Partition, 2).unwrap();
let desc = LayoutDescriptor::Composite(layout);
assert_eq!(desc.tag(), 0x0B);
assert!(desc.buffer_count().is_none()); // "known zero" isn't NonZeroU8-representable
assert!(desc.is_virtual());Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.rule: CompositionRuleThe composition rule (composition_rule + combine_op wire fields).
member_count: u32Number of member tensors that immediately follow the head. A definite count
for every v1.0 composition rule; 0xFFFFFFFF (open composite) is RESERVED.
Implementations§
Source§impl CompositeLayout
impl CompositeLayout
Sourcepub fn new(rule: CompositionRule, member_count: u32) -> Result<Self>
pub fn new(rule: CompositionRule, member_count: u32) -> Result<Self>
Creates a new CompositeLayout.
§Errors
Returns Error::OpenCompositeReserved if member_count == 0xFFFFFFFF (the
open-composite sentinel, RESERVED and not usable in v1.0).
§Examples
use hurray_core::layout::{CompositeLayout, CompositionRule};
let ok = CompositeLayout::new(CompositionRule::Group, 3).unwrap();
assert_eq!(ok.member_count, 3);
// The open-composite sentinel is reserved in v1.0.
assert!(CompositeLayout::new(CompositionRule::Partition, 0xFFFF_FFFF).is_err());Trait Implementations§
Source§impl Clone for CompositeLayout
impl Clone for CompositeLayout
Source§fn clone(&self) -> CompositeLayout
fn clone(&self) -> CompositeLayout
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 CompositeLayout
impl Debug for CompositeLayout
impl Eq for CompositeLayout
Source§impl Hash for CompositeLayout
impl Hash for CompositeLayout
Source§impl PartialEq for CompositeLayout
impl PartialEq for CompositeLayout
Source§fn eq(&self, other: &CompositeLayout) -> bool
fn eq(&self, other: &CompositeLayout) -> bool
Tests for
self and other values to be equal, and is used by ==.impl StructuralPartialEq for CompositeLayout
Auto Trait Implementations§
impl Freeze for CompositeLayout
impl RefUnwindSafe for CompositeLayout
impl Send for CompositeLayout
impl Sync for CompositeLayout
impl Unpin for CompositeLayout
impl UnsafeUnpin for CompositeLayout
impl UnwindSafe for CompositeLayout
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