blob: fc4eba16bb4baf2955e760deceaf1376e08ba052 [file] [log] [blame]
// Copyright © 2024 Collabora, Ltd.
// SPDX-License-Identifier: MIT
use std::ops::Index;
pub enum AttrList<T: 'static> {
Array(&'static [T]),
Uniform(T),
}
impl<T: 'static> Index<usize> for AttrList<T> {
type Output = T;
fn index(&self, idx: usize) -> &T {
match self {
AttrList::Array(arr) => &arr[idx],
AttrList::Uniform(typ) => typ,
}
}
}
pub trait AsSlice<T> {
type Attr;
fn as_slice(&self) -> &[T];
fn as_mut_slice(&mut self) -> &mut [T];
fn attrs(&self) -> AttrList<Self::Attr>;
}