vapoursynth4_rs/node/
dependency.rs1use 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}