mirror of
https://github.com/storytold/effectcraft.git
synced 2026-10-26 11:07:54 -06:00
Never crash: project crate without expect()
Layer::motion_trackers_mut expect()ed the group it had just inserted; it returns an Option now and track.motion reports an error if the group is somehow missing. Denies the panic lints in the crate (the project model behind .ecproj files). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
10644a83aa
commit
587d4803fe
@@ -0,0 +1,4 @@
|
||||
allow-unwrap-in-tests = true
|
||||
allow-expect-in-tests = true
|
||||
allow-panic-in-tests = true
|
||||
allow-indexing-slicing-in-tests = true
|
||||
@@ -214,7 +214,7 @@ fn create(s: &mut Session, p: &V, cmd: &str) -> Result<V> {
|
||||
let mut ids = Ids(&mut next);
|
||||
let g = tracking::tracker(&mut ids, &name, st, &pts);
|
||||
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;
|
||||
state.current_track = Some((lid, uid));
|
||||
state.selected_layers = vec![lid];
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
//! ([`props`]). Compositions sit behind `Arc` so undo snapshots share everything that did not
|
||||
//! change.
|
||||
|
||||
#![deny(clippy::unwrap_used, clippy::expect_used, clippy::panic, clippy::unimplemented, clippy::todo, clippy::unreachable)]
|
||||
|
||||
pub mod build;
|
||||
pub mod essential;
|
||||
pub mod props;
|
||||
|
||||
@@ -235,11 +235,11 @@ impl Layer {
|
||||
self.trackers().find(|(g, _)| g.uid == uid)
|
||||
}
|
||||
/// 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() {
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user