use aurora::{InMemoryStorage, Storage};
#[derive(Debug, Clone)]
struct Product {
name: String,
price: f64,
category: String,
in_stock: bool,
}
fn main() {
let mut storage = InMemoryStorage::<u32, Product>::create();
storage.insert(
1,
Product {
name: "Laptop".to_string(),
price: 999.99,
category: "Electronics".to_string(),
in_stock: true,
},
);
storage.insert(
2,
Product {
name: "Mouse".to_string(),
price: 29.99,
category: "Electronics".to_string(),
in_stock: true,
},
);
storage.insert(
3,
Product {
name: "Desk".to_string(),
price: 299.99,
category: "Furniture".to_string(),
in_stock: false,
},
);
storage.insert(
4,
Product {
name: "Chair".to_string(),
price: 149.99,
category: "Furniture".to_string(),
in_stock: true,
},
);
storage.insert(
5,
Product {
name: "Keyboard".to_string(),
price: 79.99,
category: "Electronics".to_string(),
in_stock: true,
},
);
println!("Total products: {}\n", storage.len());
println!("1. Products in stock:");
let in_stock_ids = storage.search_by_value(|p| p.in_stock);
for id in &in_stock_ids {
if let Some(product) = storage.get(id) {
println!(" ID {}: {} - ${:.2}", id, product.name, product.price);
}
}
println!(" Found {} products\n", in_stock_ids.len());
println!("2. Electronics category:");
let electronics_ids = storage.search_by_value(|p| p.category == "Electronics");
for id in &electronics_ids {
if let Some(product) = storage.get(id) {
println!(" ID {}: {} - ${:.2}", id, product.name, product.price);
}
}
println!(" Found {} products\n", electronics_ids.len());
println!("3. Products under $100:");
let affordable_ids = storage.search_by_value(|p| p.price < 100.0);
for id in &affordable_ids {
if let Some(product) = storage.get(id) {
println!(" ID {}: {} - ${:.2}", id, product.name, product.price);
}
}
println!(" Found {} products\n", affordable_ids.len());
println!("4. In-stock electronics under $100:");
let filtered_ids = storage.search_by_value(|p| {
p.in_stock && p.category == "Electronics" && p.price < 100.0
});
for id in &filtered_ids {
if let Some(product) = storage.get(id) {
println!(" ID {}: {} - ${:.2}", id, product.name, product.price);
}
}
println!(" Found {} products\n", filtered_ids.len());
println!("5. Products over $1000:");
let expensive_ids = storage.search_by_value(|p| p.price > 1000.0);
if expensive_ids.is_empty() {
println!(" No products found");
}
}