[−][src]Struct varisat::context::Context
Central solver data structure.
This struct contains all data kept by the solver. Most functions operating on multiple fields of
the context use partial references provided by the partial_ref
crate. This documents the data
dependencies and makes the borrow checker happy without the overhead of passing individual
references.
Fields
analyze_conflict: AnalyzeConflict
assignment: Assignment
binary_clauses: BinaryClauses
clause_activity: ClauseActivity
clause_alloc: ClauseAlloc
clause_db: ClauseDb
impl_graph: ImplGraph
assumptions: Assumptions
model: Model
proof: Proof<'a>
schedule: Schedule
solver_config: SolverConfig
solver_state: SolverState
tmp_data: TmpData
tmp_flags: TmpFlags
trail: Trail
variables: Variables
vsids: Vsids
watchlists: Watchlists
Trait Implementations
impl<'a> Default for Context<'a>
[src]
impl<'a> PartialRefTarget for Context<'a>
[src]
type RawTarget = Self
A partial reference will be represented by a pointer to this associated type. Read more
impl<'a1, 'a> IntoPartialRef<'a1> for &'a1 Context<'a>
[src]
type Ref = Const<WatchlistsP, Const<VsidsP, Const<VariablesP, Const<TrailP, Const<TmpFlagsP, Const<TmpDataP, Const<SolverStateP, Const<SolverConfigP, Const<ScheduleP, Const<ProofP<'a>, Const<ModelP, Const<AssumptionsP, Const<ImplGraphP, Const<ClauseDbP, Const<ClauseAllocP, Const<ClauseActivityP, Const<BinaryClausesP, Const<AssignmentP, Const<AnalyzeConflictP, Ref<'a1, Context<'a>>>>>>>>>>>>>>>>>>>>>
fn into_partial_ref(self) -> Self::Ref
[src]
impl<'a1, 'a> IntoPartialRef<'a1> for &'a1 mut Context<'a>
[src]
type Ref = Mut<WatchlistsP, Mut<VsidsP, Mut<VariablesP, Mut<TrailP, Mut<TmpFlagsP, Mut<TmpDataP, Mut<SolverStateP, Mut<SolverConfigP, Mut<ScheduleP, Mut<ProofP<'a>, Mut<ModelP, Mut<AssumptionsP, Mut<ImplGraphP, Mut<ClauseDbP, Mut<ClauseAllocP, Mut<ClauseActivityP, Mut<BinaryClausesP, Mut<AssignmentP, Mut<AnalyzeConflictP, Ref<'a1, Context<'a>>>>>>>>>>>>>>>>>>>>>
fn into_partial_ref(self) -> Self::Ref
[src]
impl<'a1, 'a, ContainingPart, Reference> SplitIntoParts<'a1, ContainingPart, Reference> for Context<'a> where
ContainingPart: Part<PartType = Field<Self>>,
Reference: PartialRef<'a1>,
Reference::Target: HasPart<ContainingPart>,
[src]
ContainingPart: Part<PartType = Field<Self>>,
Reference: PartialRef<'a1>,
Reference::Target: HasPart<ContainingPart>,
type Result = Const<Nested<ContainingPart, WatchlistsP>, Const<Nested<ContainingPart, VsidsP>, Const<Nested<ContainingPart, VariablesP>, Const<Nested<ContainingPart, TrailP>, Const<Nested<ContainingPart, TmpFlagsP>, Const<Nested<ContainingPart, TmpDataP>, Const<Nested<ContainingPart, SolverStateP>, Const<Nested<ContainingPart, SolverConfigP>, Const<Nested<ContainingPart, ScheduleP>, Const<Nested<ContainingPart, ProofP<'a>>, Const<Nested<ContainingPart, ModelP>, Const<Nested<ContainingPart, AssumptionsP>, Const<Nested<ContainingPart, ImplGraphP>, Const<Nested<ContainingPart, ClauseDbP>, Const<Nested<ContainingPart, ClauseAllocP>, Const<Nested<ContainingPart, ClauseActivityP>, Const<Nested<ContainingPart, BinaryClausesP>, Const<Nested<ContainingPart, AssignmentP>, Const<Nested<ContainingPart, AnalyzeConflictP>, Reference>>>>>>>>>>>>>>>>>>>
A partial reference that has all the parts Reference
and all parts of Self
nested in ContainingPart
as constant parts. Read more
type ResultMut = Mut<Nested<ContainingPart, WatchlistsP>, Mut<Nested<ContainingPart, VsidsP>, Mut<Nested<ContainingPart, VariablesP>, Mut<Nested<ContainingPart, TrailP>, Mut<Nested<ContainingPart, TmpFlagsP>, Mut<Nested<ContainingPart, TmpDataP>, Mut<Nested<ContainingPart, SolverStateP>, Mut<Nested<ContainingPart, SolverConfigP>, Mut<Nested<ContainingPart, ScheduleP>, Mut<Nested<ContainingPart, ProofP<'a>>, Mut<Nested<ContainingPart, ModelP>, Mut<Nested<ContainingPart, AssumptionsP>, Mut<Nested<ContainingPart, ImplGraphP>, Mut<Nested<ContainingPart, ClauseDbP>, Mut<Nested<ContainingPart, ClauseAllocP>, Mut<Nested<ContainingPart, ClauseActivityP>, Mut<Nested<ContainingPart, BinaryClausesP>, Mut<Nested<ContainingPart, AssignmentP>, Mut<Nested<ContainingPart, AnalyzeConflictP>, Reference>>>>>>>>>>>>>>>>>>>
A partial reference that has all the parts Reference
and all parts of Self
nested in ContainingPart
as mutable parts. Read more
impl<'a> HasPart<AnalyzeConflictP> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<AnalyzeConflictP as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<AnalyzeConflictP as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<AnalyzeConflictP as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<AnalyzeConflictP as Part>::PartType as PartType>::PtrMut
impl<'a> HasPart<AssignmentP> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<AssignmentP as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<AssignmentP as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<AssignmentP as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<AssignmentP as Part>::PartType as PartType>::PtrMut
impl<'a> HasPart<BinaryClausesP> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<BinaryClausesP as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<BinaryClausesP as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<BinaryClausesP as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<BinaryClausesP as Part>::PartType as PartType>::PtrMut
impl<'a> HasPart<ClauseActivityP> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<ClauseActivityP as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<ClauseActivityP as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<ClauseActivityP as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<ClauseActivityP as Part>::PartType as PartType>::PtrMut
impl<'a> HasPart<ClauseAllocP> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<ClauseAllocP as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<ClauseAllocP as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<ClauseAllocP as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<ClauseAllocP as Part>::PartType as PartType>::PtrMut
impl<'a> HasPart<ClauseDbP> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<ClauseDbP as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<ClauseDbP as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<ClauseDbP as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<ClauseDbP as Part>::PartType as PartType>::PtrMut
impl<'a> HasPart<ImplGraphP> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<ImplGraphP as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<ImplGraphP as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<ImplGraphP as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<ImplGraphP as Part>::PartType as PartType>::PtrMut
impl<'a> HasPart<AssumptionsP> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<AssumptionsP as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<AssumptionsP as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<AssumptionsP as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<AssumptionsP as Part>::PartType as PartType>::PtrMut
impl<'a> HasPart<ModelP> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<ModelP as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<ModelP as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<ModelP as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<ModelP as Part>::PartType as PartType>::PtrMut
impl<'a> HasPart<ProofP<'a>> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<ProofP<'a> as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<ProofP<'a> as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<ProofP<'a> as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<ProofP<'a> as Part>::PartType as PartType>::PtrMut
impl<'a> HasPart<ScheduleP> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<ScheduleP as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<ScheduleP as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<ScheduleP as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<ScheduleP as Part>::PartType as PartType>::PtrMut
impl<'a> HasPart<SolverConfigP> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<SolverConfigP as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<SolverConfigP as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<SolverConfigP as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<SolverConfigP as Part>::PartType as PartType>::PtrMut
impl<'a> HasPart<SolverStateP> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<SolverStateP as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<SolverStateP as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<SolverStateP as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<SolverStateP as Part>::PartType as PartType>::PtrMut
impl<'a> HasPart<TmpDataP> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<TmpDataP as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<TmpDataP as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<TmpDataP as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<TmpDataP as Part>::PartType as PartType>::PtrMut
impl<'a> HasPart<TmpFlagsP> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<TmpFlagsP as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<TmpFlagsP as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<TmpFlagsP as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<TmpFlagsP as Part>::PartType as PartType>::PtrMut
impl<'a> HasPart<TrailP> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<TrailP as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<TrailP as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<TrailP as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<TrailP as Part>::PartType as PartType>::PtrMut
impl<'a> HasPart<VariablesP> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<VariablesP as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<VariablesP as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<VariablesP as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<VariablesP as Part>::PartType as PartType>::PtrMut
impl<'a> HasPart<VsidsP> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<VsidsP as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<VsidsP as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<VsidsP as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<VsidsP as Part>::PartType as PartType>::PtrMut
impl<'a> HasPart<WatchlistsP> for Context<'a>
[src]
unsafe fn part_ptr(
ptr: *const Self
) -> <<WatchlistsP as Part>::PartType as PartType>::Ptr
[src]
ptr: *const Self
) -> <<WatchlistsP as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut Self
) -> <<WatchlistsP as Part>::PartType as PartType>::PtrMut
[src]
ptr: *mut Self
) -> <<WatchlistsP as Part>::PartType as PartType>::PtrMut
Auto Trait Implementations
Blanket Implementations
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From<T> for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<Reference, Outer, OuterFieldType, Inner> HasPart<Nested<Outer, Inner>> for Reference where
Inner: Part,
Outer: Part<PartType = Field<OuterFieldType>>,
OuterFieldType: HasPart<Inner, RawTarget = OuterFieldType> + PartialRefTarget + ?Sized,
Reference: HasPart<Outer> + ?Sized,
Inner: Part,
Outer: Part<PartType = Field<OuterFieldType>>,
OuterFieldType: HasPart<Inner, RawTarget = OuterFieldType> + PartialRefTarget + ?Sized,
Reference: HasPart<Outer> + ?Sized,
unsafe fn part_ptr(
ptr: *const <Reference as PartialRefTarget>::RawTarget
) -> <<Inner as Part>::PartType as PartType>::Ptr
ptr: *const <Reference as PartialRefTarget>::RawTarget
) -> <<Inner as Part>::PartType as PartType>::Ptr
unsafe fn part_ptr_mut(
ptr: *mut <Reference as PartialRefTarget>::RawTarget
) -> <<Inner as Part>::PartType as PartType>::PtrMut
ptr: *mut <Reference as PartialRefTarget>::RawTarget
) -> <<Inner as Part>::PartType as PartType>::PtrMut