pub(super) fn new(general_form: &'a GeneralForm<OF>) -> Result<Self, LinearProgramType<OF>> {
        let counters = Counters::new(general_form);
        let updates = Updates::new(general_form, &counters)?;
        let queues = Queues::new(general_form, &counters);

        Ok(Self {
            queues,
            updates,
            counters,

            activity_bounds: vec![(None, None); general_form.nr_constraints()],

            general_form: &general_form,
        })
    }
/// Create a new instance.
///
/// This operation is expensive, it creates a row major copy of the constraint matrix. The
/// creation of some of the indices might also be expensive.
/// TODO(OPTIMIZATION): Can this copy be created only when needed?
/// TODO(OPTIMIZATION): Are these counters and queues created in a single pass? (compiler)
///
/// Note that all indices of columns and variables in the attributes of this struct are
/// relative to the active variables in the problem in its state before the presolving started.
/// These indices get updated (e.g. due to the removal of constraints from the general form's
/// data structures) only after this struct is dropped.
///
/// # Arguments
///
/// * `general_form`: Problem description which is being presolved.
Create a new instance.
This operation is expensive, it creates a row major copy of the constraint matrix. The
creation of some of the indices might also be expensive.
TODO(OPTIMIZATION): Can this copy be created only when needed.
TODO(OPTIMIZATION): Are these counters and queues created in a single pass. (compiler)

Note that all indices of columns and variables in the attributes of this struct are
relative to the active variables in the problem in its state before the presolving started.
These indices get updated  only after this struct is dropped.
Create a new instance . This operation is expensive it creates a row major copy of the constraint matrix . The creation of some of the indices might also be expensive . TODO ( OPTIMIZATION ) : Can this copy be created only when needed . TODO ( OPTIMIZATION ) : Are these counters and queues created in a single pass . ( compiler ) Note that all indices of columns and variables in the attributes of this struct are relative to the active variables in the problem in its state before the presolving started . These indices get updated only after this struct is dropped .
pub(super) fn new(general_form: &'a GeneralForm<OF>) -> Result<Self, LinearProgramType<OF>> {
        let counters = Counters::new(general_form);
        let updates = Updates::new(general_form, &counters)?;
        let queues = Queues::new(general_form, &counters);
        Ok(Self {
            queues,
            updates,
            counters,
            activity_bounds: vec![(None, None); general_form.nr_constraints()],
            general_form: &general_form,
        })
    }
pub ( super ) fn new ( general_form : & ' a GeneralForm < OF > ) -> Result < Self , LinearProgramType < OF > > { let counters = Counters :: new ( general_form ) ; let updates = Updates :: new ( general_form , & counters ) ? ; let queues = Queues :: new ( general_form , & counters ) ; Ok ( Self { queues , updates , counters , activity_bounds : vec ! [ ( None None ) general_form nr_constraints ( ) ] , general_form : & general_form , } ) }
Create a new instance.
Create a new instance .
general_form
&'a GeneralForm<OF>
general_form
&'a GeneralForm<OF>