view rust/hg-core/src/dirstate.rs @ 49632:29cf3167e459

hg-core: remove unneeded trait now that we support Rust 1.52+
author Raphaël Gomès <rgomes@octobus.net>
date Mon, 14 Nov 2022 15:29:58 +0100
parents b07465adbcc8
children e98fd81bb151
line wrap: on
line source

// dirstate module
//
// Copyright 2019 Raphaël Gomès <rgomes@octobus.net>
//
// This software may be used and distributed according to the terms of the
// GNU General Public License version 2 or any later version.

use crate::dirstate_tree::on_disk::DirstateV2ParseError;
use crate::revlog::node::NULL_NODE;
use crate::revlog::Node;
use crate::utils::hg_path::HgPath;
use bytes_cast::BytesCast;

pub mod dirs_multiset;
pub mod entry;
pub mod parsers;
pub mod status;

pub use self::entry::*;

#[derive(Debug, PartialEq, Copy, Clone, BytesCast)]
#[repr(C)]
pub struct DirstateParents {
    pub p1: Node,
    pub p2: Node,
}

impl DirstateParents {
    pub const NULL: Self = Self {
        p1: NULL_NODE,
        p2: NULL_NODE,
    };

    pub fn is_merge(&self) -> bool {
        return !(self.p2 == NULL_NODE);
    }
}

pub type StateMapIter<'a> = Box<
    dyn Iterator<
            Item = Result<(&'a HgPath, DirstateEntry), DirstateV2ParseError>,
        > + Send
        + 'a,
>;

pub type CopyMapIter<'a> = Box<
    dyn Iterator<Item = Result<(&'a HgPath, &'a HgPath), DirstateV2ParseError>>
        + Send
        + 'a,
>;