Re-exports§
pub use utils::erase_and_norm;
pub use utils::implied_predicates;
pub use utils::predicates_defined_on;
pub use utils::required_predicates;
pub use utils::self_predicate;
pub use resolution::PredicateSearcher;
Modules§
- Trait resolution: given a trait reference, we track which local clause caused it to be true. This module is independent from the rest of hax, in particular it doesn’t use its state-tracking machinery.
- utils 🔒Each item can involve three kinds of predicates:
Structs§
- An
ImplExpr
describes the full data of a trait implementation. Because of generics, this may need to combine several concrete trait implementation items. For example,((1u8, 2u8), "hello").clone()
combines the generic implementation ofClone
for(A, B)
with the concrete implementations foru8
and&str
, represented as a tree.
Enums§
- The source of a particular trait implementation. Most often this is either
Concrete
for a concreteimpl Trait for Type {}
item, orLocalBound
for a context-boundwhere T: Trait
.
Functions§
- Retrieve the
Self: Trait
clause for a trait associated item. - Solve the trait obligations for implementing a trait (or for trait associated type bounds) in the current context.
- Solve the trait obligations for a specific item use (for example, a method call, an ADT, etc.) in the current context.
- Apply the given generics to the provided clauses and resolve the trait references in the current context.
- This is the entrypoint of the solving.
- Given a clause
clause
in the context of some impl blockimpl_did
, susbts correctlySelf
fromclause
and (1) derive aClause
and (2) resolve anImplExpr
.