vapoursynth4_rs/node/
dependency.rs

1use std::ops::Deref;
2
3use crate::ffi;
4
5pub type RequestPattern = ffi::VSRequestPattern;
6pub type FilterDependency = ffi::VSFilterDependency;
7
8#[repr(transparent)]
9pub struct Dependencies {
10    inner: [FilterDependency],
11}
12
13impl Dependencies {
14    #[must_use]
15    pub fn new(deps: &[FilterDependency]) -> Option<&Dependencies> {
16        i32::try_from(deps.len()).ok().map(|_| unsafe {
17            &*(std::ptr::from_ref::<[FilterDependency]>(deps) as *const Dependencies)
18        })
19    }
20}
21
22impl<const N: usize> From<[FilterDependency; N]> for &Dependencies {
23    fn from(deps: [FilterDependency; N]) -> Self {
24        unsafe {
25            &*(std::ptr::from_ref::<[FilterDependency]>(deps.as_slice()) as *const Dependencies)
26        }
27    }
28}
29
30impl Deref for Dependencies {
31    type Target = [FilterDependency];
32
33    fn deref(&self) -> &Self::Target {
34        &self.inner
35    }
36}