50 lines
1.4 KiB
Rust
50 lines
1.4 KiB
Rust
|
|
#[derive(Debug)]
|
||
|
|
enum ItemUsage {
|
||
|
|
Singleton,
|
||
|
|
Once,
|
||
|
|
Periodic(i32),
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Debug)]
|
||
|
|
struct PackageItem {
|
||
|
|
name: String,
|
||
|
|
usage: ItemUsage
|
||
|
|
}
|
||
|
|
|
||
|
|
impl PackageItem {
|
||
|
|
fn new(name: String, usage: ItemUsage) -> PackageItem {
|
||
|
|
PackageItem{
|
||
|
|
name: name,
|
||
|
|
usage: usage,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
struct PackageList<'a> {
|
||
|
|
name: String,
|
||
|
|
items: &'a[PackageItem],
|
||
|
|
}
|
||
|
|
|
||
|
|
fn main() {
|
||
|
|
let package_list_camping = PackageList {
|
||
|
|
name: String::from("camping"),
|
||
|
|
items: &[
|
||
|
|
PackageItem::new(String::from("Schlafsack"), ItemUsage::Singleton),
|
||
|
|
PackageItem::new(String::from("Zelt"), ItemUsage::Singleton),
|
||
|
|
PackageItem::new(String::from("Luftmatratze"), ItemUsage::Singleton),
|
||
|
|
PackageItem::new(String::from("Campingstuhl"), ItemUsage::Singleton),
|
||
|
|
PackageItem::new(String::from("Regenjacke"), ItemUsage::Singleton),
|
||
|
|
PackageItem::new(String::from("Tasse"), ItemUsage::Singleton),
|
||
|
|
PackageItem::new(String::from("Topf"), ItemUsage::Singleton),
|
||
|
|
PackageItem::new(String::from("Messer"), ItemUsage::Singleton),
|
||
|
|
PackageItem::new(String::from("Messer"), ItemUsage::Singleton),
|
||
|
|
PackageItem::new(String::from("Unterhose"), ItemUsage::Periodic(1)),
|
||
|
|
],
|
||
|
|
};
|
||
|
|
|
||
|
|
println!("Contents for package list {:?}:", package_list_camping.name);
|
||
|
|
for item in package_list_camping.items {
|
||
|
|
println!("{:?}", item);
|
||
|
|
}
|
||
|
|
}
|