comparison rust/hg-core/src/revlog/changelog.rs @ 46431:645ee7225fab

rust: Make NodePrefix allocation-free and Copy, remove NodePrefixRef The `*Ref` struct only existed to avoid allocating `Vec`s when cloning `NodePrefix`, but we can avoid having `Vec` in the first place by using an inline array instead. This makes `NodePrefix` 21 bytes (with 1 for the length) which is smaller than before as `Vec` alone is 24 bytes. Differential Revision: https://phab.mercurial-scm.org/D9863
author Simon Sapin <simon.sapin@octobus.net>
date Mon, 25 Jan 2021 11:48:47 +0100
parents 8a4914397d02
children 4b381dbbf8b7
comparison
equal deleted inserted replaced
46430:b84c3d43ff2e 46431:645ee7225fab
1 use crate::repo::Repo; 1 use crate::repo::Repo;
2 use crate::revlog::revlog::{Revlog, RevlogError}; 2 use crate::revlog::revlog::{Revlog, RevlogError};
3 use crate::revlog::NodePrefixRef; 3 use crate::revlog::NodePrefix;
4 use crate::revlog::Revision; 4 use crate::revlog::Revision;
5 5
6 /// A specialized `Revlog` to work with `changelog` data format. 6 /// A specialized `Revlog` to work with `changelog` data format.
7 pub struct Changelog { 7 pub struct Changelog {
8 /// The generic `revlog` format. 8 /// The generic `revlog` format.
17 } 17 }
18 18
19 /// Return the `ChangelogEntry` a given node id. 19 /// Return the `ChangelogEntry` a given node id.
20 pub fn get_node( 20 pub fn get_node(
21 &self, 21 &self,
22 node: NodePrefixRef, 22 node: NodePrefix,
23 ) -> Result<ChangelogEntry, RevlogError> { 23 ) -> Result<ChangelogEntry, RevlogError> {
24 let rev = self.revlog.get_node_rev(node)?; 24 let rev = self.revlog.get_node_rev(node)?;
25 self.get_rev(rev) 25 self.get_rev(rev)
26 } 26 }
27 27