pub trait ProductDomainExt {
// Required methods
fn add_product_domain(
&mut self,
name: impl Into<String>,
product: ProductDomain,
) -> Result<(), AdapterError>;
fn get_product_domain(&self, name: &str) -> Option<&ProductDomain>;
fn list_product_domains(&self) -> Vec<(&str, &ProductDomain)>;
}Expand description
Extension trait for SymbolTable to support product domains.
Required Methods§
Sourcefn add_product_domain(
&mut self,
name: impl Into<String>,
product: ProductDomain,
) -> Result<(), AdapterError>
fn add_product_domain( &mut self, name: impl Into<String>, product: ProductDomain, ) -> Result<(), AdapterError>
Add a product domain to the symbol table.
The product domain’s cardinality is computed from its components.
§Examples
use tensorlogic_adapters::{SymbolTable, DomainInfo, ProductDomain, ProductDomainExt};
let mut table = SymbolTable::new();
table.add_domain(DomainInfo::new("Person", 100)).expect("unwrap");
table.add_domain(DomainInfo::new("Location", 50)).expect("unwrap");
let product = ProductDomain::binary("Person", "Location");
table.add_product_domain("PersonAtLocation", product).expect("unwrap");
let domain = table.get_domain("PersonAtLocation").expect("unwrap");
assert_eq!(domain.cardinality, 5000);Sourcefn get_product_domain(&self, name: &str) -> Option<&ProductDomain>
fn get_product_domain(&self, name: &str) -> Option<&ProductDomain>
Get a product domain by name.
Returns None if the domain doesn’t exist or is not a product domain.
Sourcefn list_product_domains(&self) -> Vec<(&str, &ProductDomain)>
fn list_product_domains(&self) -> Vec<(&str, &ProductDomain)>
List all product domains in the symbol table.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".