pub struct Model<'st> { /* private fields */ }Expand description
A Model contains the values of all named constants returned through
Solver::check_sat_with_model or by calling Solver::get_model.
The two most common usages of Model is to:
- Extract values for constants using
Model::eval. - Print out the produced model using
println!("{model}").
Implementations§
Source§impl<'st> Model<'st>
impl<'st> Model<'st>
Sourcepub fn eval<T: Sorted<'st>>(&self, x: Const<'st, T>) -> Option<T::Inner>
pub fn eval<T: Sorted<'st>>(&self, x: Const<'st, T>) -> Option<T::Inner>
Extract the value of a constant. Returns None if the value was not
part of the model, which occurs if the constant was not part of any
expression asserted.
let x = Int::new_const(&st, "x");
solver.assert(x._eq(12))?;
let model = solver.check_sat_with_model()?.expect_sat()?;
match model.eval(x) {
Some(x) => println!("This is the value of x: {x}"),
None => panic!("Oh no! This should never happen, as x was part of an assert"),
}Trait Implementations§
Auto Trait Implementations§
impl<'st> Freeze for Model<'st>
impl<'st> !RefUnwindSafe for Model<'st>
impl<'st> !Send for Model<'st>
impl<'st> !Sync for Model<'st>
impl<'st> Unpin for Model<'st>
impl<'st> !UnwindSafe for Model<'st>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<'st, T> IntoWithStorage<'st, T> for T
impl<'st, T> IntoWithStorage<'st, T> for T
Source§fn into_with_storage(self, _st: &'st Storage) -> T
fn into_with_storage(self, _st: &'st Storage) -> T
Construct a
STerm with the presence of Storage