0833ae6d
Simplify read_collab_config with Option-chaining
a73x 2026-03-21 19:05
Replace 7 sequential match arms with a closure using ? operator and unwrap_or_default(), reducing the function from ~30 to ~12 lines. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
diff --git a/src/patch.rs b/src/patch.rs index 590f2f5..dba1b83 100644 --- a/src/patch.rs +++ b/src/patch.rs @@ -681,35 +681,17 @@ struct CollabConfig { } fn read_collab_config(repo: &Repository) -> CollabConfig { let config_ref = "refs/collab/config"; let tip = match repo.refname_to_id(config_ref) { Ok(oid) => oid, Err(_) => return CollabConfig::default(), }; let commit = match repo.find_commit(tip) { Ok(c) => c, Err(_) => return CollabConfig::default(), }; let tree = match commit.tree() { Ok(t) => t, Err(_) => return CollabConfig::default(), }; let entry = match tree.get_name("config.json") { Some(e) => e, None => return CollabConfig::default(), }; let blob = match repo.find_blob(entry.id()) { Ok(b) => b, Err(_) => return CollabConfig::default(), }; let val: serde_json::Value = match serde_json::from_slice(blob.content()) { Ok(v) => v, Err(_) => return CollabConfig::default(), }; CollabConfig { require_approval_on_latest: val .pointer("/merge/require_approval_on_latest") .and_then(|v| v.as_bool()) .unwrap_or(false), } (|| -> Option<CollabConfig> { let tip = repo.refname_to_id("refs/collab/config").ok()?; let tree = repo.find_commit(tip).ok()?.tree().ok()?; let blob = repo.find_blob(tree.get_name("config.json")?.id()).ok()?; let val: serde_json::Value = serde_json::from_slice(blob.content()).ok()?; Some(CollabConfig { require_approval_on_latest: val .pointer("/merge/require_approval_on_latest") .and_then(|v| v.as_bool()) .unwrap_or(false), }) })() .unwrap_or_default() }