Mercurial > hg
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 |