pub trait FeatureCollection<'a>: Sized + 'a {
// Required method
fn from_cache(
cache: &mut FeatureCache<'a>,
class: ThreadingClass,
) -> Result<Self, MissingFeatureError>;
}Expand description
Convenience trait for feature collections.
The feature cache is only for temporary use; Once a feature is retrieved, it is removed from the cache. Therefore you need a way to properly store features.
You can simply create a struct with features as it’s fields and derive FeatureCollection for it. A procedural macro will then create a method that populates the struct from the cache, or returns None if one of the required features is not in the cache.
An example using the few built-in features:
use lv2_core::plugin::*;
use lv2_core::feature::*;
#[derive(FeatureCollection)]
struct MyCollection {
live: IsLive,
hardrt: Option<HardRTCapable>,
}Required Methods§
Sourcefn from_cache(
cache: &mut FeatureCache<'a>,
class: ThreadingClass,
) -> Result<Self, MissingFeatureError>
fn from_cache( cache: &mut FeatureCache<'a>, class: ThreadingClass, ) -> Result<Self, MissingFeatureError>
Populate a collection with features from the cache for the given threading class.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".