pub trait Subsystem: Sized {
type Config: Debug + Send + Sync + Clone + 'static;
type Output: Send + 'static;
type Error: Debug + Send + 'static;
const NAME: &'static str;
// Required methods
async fn init(cam_config: Camera) -> Result<Self, Self::Error>;
fn preproc(
config: Camera,
pipeline: &Pipeline,
) -> Result<(Element, Element), Self::Error>;
async fn process(
&mut self,
nt: NtConn,
rx: Receiver<Option<Buffer>>,
) -> Result<Self::Output, Self::Error>;
}
Expand description
A processing subsystem
Subsystems implement different computer vision tasks, such as AprilTags or object detection.
A subsystem should be generic, not something that is only used for some specific aspect of a game. For example, note detection for the 2024 game, Crescendo, would go under the object detection subsystem, rather than a brand new subsystem.
Make sure to pay attention to and respect each subsystem’s documentation and structure.
Required Associated Constants§
Required Associated Types§
type Config: Debug + Send + Sync + Clone + 'static
type Output: Send + 'static
type Error: Debug + Send + 'static
Required Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.