blob: 332a5e6bf4878454e4b365b0fad44abdfae7b50e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
use scene::{SceneTracks, Track};
pub fn find_track<'a>(tracks: &'a SceneTracks, track_id: &str) -> Option<&'a Track> {
if tracks.main.id() == track_id {
return Some(&tracks.main);
}
tracks
.overlay
.iter()
.find(|track| track.id() == track_id)
.or_else(|| tracks.audio.iter().find(|track| track.id() == track_id))
}
pub fn find_track_mut<'a>(
tracks: &'a mut SceneTracks,
track_id: &str,
) -> Option<&'a mut Track> {
if tracks.main.id() == track_id {
return Some(&mut tracks.main);
}
tracks
.overlay
.iter_mut()
.find(|track| track.id() == track_id)
.or_else(|| tracks.audio.iter_mut().find(|track| track.id() == track_id))
}
pub fn all_tracks(tracks: &SceneTracks) -> impl Iterator<Item = &Track> {
tracks
.overlay
.iter()
.chain(std::iter::once(&tracks.main))
.chain(tracks.audio.iter())
}
pub fn all_tracks_mut(tracks: &mut SceneTracks) -> impl Iterator<Item = &mut Track> {
tracks
.overlay
.iter_mut()
.chain(std::iter::once(&mut tracks.main))
.chain(tracks.audio.iter_mut())
}
|