Mercurial > public > mercurial-scm > hg-stable
changeset 52866:4e5efcaa7e60
rust-pyo3-dirstate: DirstateIdentity class
author | Georges Racinet <georges.racinet@cloudcrane.io> |
---|---|
date | Wed, 29 Jan 2025 14:05:21 +0100 |
parents | c6707e112d96 |
children | 138e4ce24680 |
files | rust/hg-pyo3/src/dirstate.rs rust/hg-pyo3/src/dirstate/dirstate_map.rs |
diffstat | 2 files changed, 57 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/rust/hg-pyo3/src/dirstate.rs Wed Jan 29 14:03:24 2025 +0100 +++ b/rust/hg-pyo3/src/dirstate.rs Wed Jan 29 14:05:21 2025 +0100 @@ -12,6 +12,8 @@ //! From Python, this will be seen as `mercurial.pyo3_rustext.dirstate` use crate::{exceptions, utils::new_submodule}; use pyo3::prelude::*; +mod dirstate_map; +use dirstate_map::DirstateIdentity; pub fn init_module<'py>( py: Python<'py>, @@ -20,5 +22,6 @@ let m = new_submodule(py, package, "dirstate")?; m.add("__doc__", "Dirstate - Rust implementation exposed via PyO3")?; m.add("FallbackError", py.get_type::<exceptions::FallbackError>())?; + m.add_class::<DirstateIdentity>()?; Ok(m) }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rust/hg-pyo3/src/dirstate/dirstate_map.rs Wed Jan 29 14:05:21 2025 +0100 @@ -0,0 +1,54 @@ +// dirstate_map.rs +// +// Copyright 2019 Raphaël Gomès <rgomes@octobus.net> +// 2025 Georges Racinet <georges.racinet@cloudcrane.io> +// +// This software may be used and distributed according to the terms of the +// GNU General Public License version 2 or any later version. +//! Bindings for the `hg::dirstate::dirstate_map` file provided by the +//! `hg-core` package. + +use pyo3::prelude::*; + +use hg::dirstate::dirstate_map::DirstateIdentity as CoreDirstateIdentity; + +#[pyclass] +pub struct DirstateIdentity { + #[allow(dead_code)] + inner: CoreDirstateIdentity, +} + +#[pymethods] +impl DirstateIdentity { + #[new] + #[allow(clippy::too_many_arguments)] + fn new( + mode: u32, + dev: u64, + ino: u64, + nlink: u64, + uid: u32, + gid: u32, + size: u64, + mtime: i64, + mtime_nsec: i64, + ctime: i64, + ctime_nsec: i64, + ) -> PyResult<Self> { + Ok(Self { + inner: CoreDirstateIdentity { + mode, + dev, + ino, + nlink, + uid, + gid, + size, + mtime, + mtime_nsec, + ctime, + ctime_nsec, + }, + }) + } +}