Merge pull request #19 from storytold/pr/never-crash-project

Never crash: project crate without expect()
This commit is contained in:
Brandon Thomas 2026-10-04 15:30:22 -04:00 committed by GitHub
commit 6f52a0aab8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 5 additions and 3 deletions

View File

@ -214,7 +214,7 @@ fn create(s: &mut Session, p: &V, cmd: &str) -> Result<V> {
let mut ids = Ids(&mut next); let mut ids = Ids(&mut next);
let g = tracking::tracker(&mut ids, &name, st, &pts); let g = tracking::tracker(&mut ids, &name, st, &pts);
let uid = g.uid; let uid = g.uid;
l.motion_trackers_mut(&mut ids).children.push(g.into()); l.motion_trackers_mut(&mut ids).ok_or_else(|| bad(cmd, "the layer has no Motion Trackers group"))?.children.push(g.into());
proj.next_id = next; proj.next_id = next;
state.current_track = Some((lid, uid)); state.current_track = Some((lid, uid));
state.selected_layers = vec![lid]; state.selected_layers = vec![lid];

View File

@ -4,6 +4,8 @@
//! ([`props`]). Compositions sit behind `Arc` so undo snapshots share everything that did not //! ([`props`]). Compositions sit behind `Arc` so undo snapshots share everything that did not
//! change. //! change.
#![deny(clippy::unwrap_used, clippy::expect_used, clippy::panic, clippy::unimplemented, clippy::todo, clippy::unreachable)]
pub mod build; pub mod build;
pub mod essential; pub mod essential;
pub mod props; pub mod props;

View File

@ -235,11 +235,11 @@ impl Layer {
self.trackers().find(|(g, _)| g.uid == uid) self.trackers().find(|(g, _)| g.uid == uid)
} }
/// The Motion Trackers group, created (first in the layer's tree, like AE) when missing. /// The Motion Trackers group, created (first in the layer's tree, like AE) when missing.
pub fn motion_trackers_mut(&mut self, ids: &mut Ids) -> &mut PropGroup { pub fn motion_trackers_mut(&mut self, ids: &mut Ids) -> Option<&mut PropGroup> {
if self.props.sub(MOTION_TRACKERS).is_none() { if self.props.sub(MOTION_TRACKERS).is_none() {
self.props.children.insert(0, motion_trackers(ids).into()); self.props.children.insert(0, motion_trackers(ids).into());
} }
self.props.sub_mut(MOTION_TRACKERS).expect("motion trackers group") self.props.sub_mut(MOTION_TRACKERS)
} }
} }