diff options
| author | tv <tv@krebsco.de> | 2026-10-31 03:52:02 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-10-31 03:52:02 +0100 |
| commit | a2c4eee15f03f4f34c7fe9f14ca9d09dbcbe2688 (patch) | |
| tree | 6fdd62049e35da8d3e14b9c6d99e5a65dc44c67b /src/document | |
| parent | f8401720436c8a2c970584dc7fb7d920acf3a0b1 (diff) | |
consistently use resolve_through
Diffstat (limited to 'src/document')
| -rw-r--r-- | src/document/store.rs | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/src/document/store.rs b/src/document/store.rs index b698d19..d314a4c 100644 --- a/src/document/store.rs +++ b/src/document/store.rs @@ -433,14 +433,10 @@ fn summary(doc: &AutoCommit, resolved: &Resolved, entries: bool) -> Result<JsonV /// Keys of the merged map at `path`; empty if it doesn't exist or isn't a map. pub(crate) fn keys_at(doc: &AutoCommit, path: &[String]) -> Result<Vec<String>, StoreError> { - let mut maps = vec![automerge::ROOT]; - for segment in path { - maps = match resolve(doc, &maps, segment, None)? { - Some(Resolved::Maps(next)) => next, - _ => return Ok(Vec::new()), - }; - } - Ok(merged_keys(doc, &maps).into_iter().collect()) + Ok(match resolve_through(doc, path)? { + Some(Resolved::Maps(maps)) => merged_keys(doc, &maps).into_iter().collect(), + _ => Vec::new(), + }) } /// Every concurrent value at `path`, newest first; empty if there is none. Where @@ -450,13 +446,9 @@ pub(crate) fn read_candidates( path: &[String], ) -> Result<Vec<JsonValue>, StoreError> { let (leaf, parents) = path.split_last().ok_or(StoreError::NotFound)?; - let mut maps = vec![automerge::ROOT]; - for segment in parents { - maps = match resolve(doc, &maps, segment, None)? { - Some(Resolved::Maps(next)) => next, - _ => return Ok(Vec::new()), - }; - } + let Some(Resolved::Maps(maps)) = resolve_through(doc, parents)? else { + return Ok(Vec::new()); + }; candidates(doc, &maps, leaf.as_str())? .into_iter() .map(|(value, id)| match value { |
