rodio/source/
empty_callback.rs1use std::time::Duration;
2
3use super::SeekError;
4use crate::common::{ChannelCount, SampleRate};
5use crate::{Sample, Source};
6
7pub struct EmptyCallback {
9 callback: Box<dyn Send + Fn()>,
10}
11
12impl EmptyCallback {
13 #[inline]
14 pub fn new(callback: Box<dyn Send + Fn()>) -> EmptyCallback {
19 EmptyCallback { callback }
20 }
21}
22
23impl Iterator for EmptyCallback {
24 type Item = Sample;
25
26 #[inline]
27 fn next(&mut self) -> Option<Self::Item> {
28 (self.callback)();
29 None
30 }
31}
32
33impl Source for EmptyCallback {
34 #[inline]
35 fn current_span_len(&self) -> Option<usize> {
36 None
37 }
38
39 #[inline]
40 fn channels(&self) -> ChannelCount {
41 1
42 }
43
44 #[inline]
45 fn sample_rate(&self) -> SampleRate {
46 48000
47 }
48
49 #[inline]
50 fn total_duration(&self) -> Option<Duration> {
51 Some(Duration::new(0, 0))
52 }
53
54 #[inline]
55 fn try_seek(&mut self, _: Duration) -> Result<(), SeekError> {
56 Err(SeekError::NotSupported {
57 underlying_source: std::any::type_name::<Self>(),
58 })
59 }
60}