Re: [PATCH 04/14] rust: add a ObjectID struct
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Oct 28, 2025, 09:17 UTC
- Message-ID
- <aQCKD--ZmKnwBWs9@pks.im>
- In-Reply-To
- <20251027004404.2152927-5-sandals@crustytoothpaste.net>
On Mon, Oct 27, 2025 at 12:43:54AM +0000, brian m. carlson wrote:
Show 17 quoted lines
> diff --git a/src/hash.rs b/src/hash.rs > new file mode 100644 > index 0000000000..0219391820 > --- /dev/null > +++ b/src/hash.rs > @@ -0,0 +1,21 @@ > +// This program is free software; you can redistribute it and/or modify > +// it under the terms of the GNU General Public License as published by > +// the Free Software Foundation: version 2 of the License, dated June 1991. > +// > +// This program is distributed in the hope that it will be useful, > +// but WITHOUT ANY WARRANTY; without even the implied warranty of > +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +// GNU General Public License for more details. > +// > +// You should have received a copy of the GNU General Public License along > +// with this program; if not, see <https://www.gnu.org/licenses/>.
We typically don't have these headers for our C code, so why have it over here?
Show 9 quoted lines
> +pub const GIT_MAX_RAWSZ: usize = 32;
> +
> +/// A binary object ID.
> +#[repr(C)]
> +#[derive(Debug, Clone, Ord, PartialOrd, Eq, PartialEq)]
> +pub struct ObjectID {
> + pub hash: [u8; GIT_MAX_RAWSZ],
> + pub algo: u32,
> +}An alternative to represent this type would be to use an enum:
pub enum ObjectID {
SHA1([u8; GIT_SHA1_RAWSZ]),
SHA256([u8; GIT_SHA256_RAWSZ]),
}That would give us some type safety going forward, but it might be harder to work with for us?
Patrick