autd3_driver/datagram/
with_segment.rs1use autd3_core::datagram::{Datagram, DatagramOption, DatagramS, Segment, TransitionMode};
2
3use derive_more::Deref;
4
5#[derive(Deref, Debug, Clone, Copy, PartialEq, Eq, Hash)]
7pub struct WithSegment<D: DatagramS> {
8 #[deref]
9 pub inner: D,
11 pub segment: Segment,
13 pub transition_mode: Option<TransitionMode>,
15}
16
17impl<D: DatagramS> WithSegment<D> {
18 #[must_use]
20 pub const fn new(inner: D, segment: Segment, transition_mode: Option<TransitionMode>) -> Self {
21 Self {
22 inner,
23 segment,
24 transition_mode,
25 }
26 }
27}
28
29impl<D: DatagramS> Datagram for WithSegment<D> {
30 type G = D::G;
31 type Error = D::Error;
32
33 fn operation_generator(
34 self,
35 geometry: &autd3_core::derive::Geometry,
36 parallel: bool,
37 ) -> Result<Self::G, Self::Error> {
38 <D as DatagramS>::operation_generator_with_segment(
39 self.inner,
40 geometry,
41 parallel,
42 self.segment,
43 self.transition_mode,
44 )
45 }
46
47 fn option(&self) -> DatagramOption {
48 <D as DatagramS>::option(&self.inner)
49 }
50}