pub fn simple(
        &mut self,
        ccs: &mut [ConfChangeSingle],
    ) -> Result<(Config, ProgressMap), String> {
        info!("exec simple change config");
        let mut cfg = self.tracker.config.clone();
        let mut prs = self.tracker.progress.clone();
        if cfg.voters.joint() {
            return Err("can't apply simple config change in joint config".to_string());
        }
        self.apply(&mut cfg, &mut prs, ccs)?;
        let count = self
            .tracker
            .config
            .voters
            .incoming
            .votes
            .symmetric_difference(&cfg.voters.incoming.votes)
            .count();
        if count > 1 {
            return Err("more than one voter changed without entering joint config".to_string());
        }
        Ok((cfg, prs))
    }
/// carries out a series of configuration changes that (in aggregate)
/// mutates the incoming majority config voters[0] by at most one. This
/// method will return an error if that is not the case, if the resulting quorum is
/// zero, or if the configuration is in a joint state (i.e. if there is an outgoing configuration).
carries out a series of configuration changes that (in aggregate)
mutates the incoming majority config voters[0] by at most one. This
method will return an error if that is not the case, if the resulting quorum is
zero, or if the configuration is in a joint state .
carries out a series of configuration changes that ( in aggregate ) mutates the incoming majority config voters [ 0 ] by at most one . This method will return an error if that is not the case if the resulting quorum is zero or if the configuration is in a joint state .
pub fn simple(
        &mut self,
        ccs: &mut [ConfChangeSingle],
    ) -> Result<(Config, ProgressMap), String> {
        info!("exec simple change config");
        let mut cfg = self.tracker.config.clone();
        let mut prs = self.tracker.progress.clone();
        if cfg.voters.joint() {
            return Err("can't apply simple config change in joint config".to_string());
        }
        self.apply(&mut cfg, &mut prs, ccs)?;
        let count = self
            .tracker
            .config
            .voters
            .incoming
            .votes
            .symmetric_difference(&cfg.voters.incoming.votes)
            .count();
        if count > 1 {
            return Err("more than one voter changed without entering joint config".to_string());
        }
        Ok((cfg, prs))
    }
pub fn simple ( & mut self , ccs : & mut [ ConfChangeSingle ] , ) -> Result < ( Config , ProgressMap ) , String > { info ! ( " " ) ; let mut cfg = self . tracker . config . clone ( ) ; let mut prs = self . tracker . progress . clone ( ) ; if cfg . voters . joint ( ) { return Err ( " " . to_string ( ) ) ; } self . apply ( & mut cfg , & mut prs , ccs ) ? ; let count = self . tracker . config . voters . incoming . votes . symmetric_difference ( & cfg . voters . incoming . votes ) . count ( ) ; if count > 1 { return Err ( " " . to_string ( ) ) ; } Ok ( ( cfg , prs ) ) }
carries out a series of configuration changes that (in aggregate)
mutates the incoming majority config voters[0] by at most one.
carries out a series of configuration changes that ( in aggregate ) mutates the incoming majority config voters [ 0 ] by at most one .
&mut self
ccs
&mut [ConfChangeSingle]