// Basic example using iterators
```rust
use chrono::Days;
use crate::{types::{
marlowe_strict::*,
marlowe::{Token,Bound}
},serialization::*};
let choice_owner = Party::role("bank");
let winner_choice = ChoiceId {
choice_name: "winner".into(),
choice_owner: choice_owner.clone()
};
let quantity = Value::ConstantValue(42000000);
from_account: choice_owner.clone(),
to: Payee::Party(pt),
token: Token::ada(),
pay: quantity.clone(),
then: Box::new(Contract::Close)
}
};
let contract = Contract::When {
when: vec![
Case {
case: Action::Deposit {
into_account: choice_owner.clone(),
party: choice_owner.clone(),
of_token: Token::ada(),
deposits: quantity.clone()
},
then: Contract::When {
when: (1..11).map(|n| {
Case {
case: Action::Choice {
for_choice: winner_choice.clone(),
choose_between: vec![Bound(n,n)]
},
then: pay_this_winner(Party::role(&format!("P{n}")))
}
}).collect(),
timeout: chrono::Utc::now().checked_add_days(Days::new(2)).unwrap().timestamp_millis(),
timeout_continuation: Contract::Close.into()
}
}
],
timeout: chrono::Utc::now().checked_add_days(Days::new(1)).unwrap().timestamp_millis(),
timeout_continuation: Contract::Close.into()
};
let serialized = marlowe::serialize_strict(contract).unwrap();
println!("{}",parsing::fmt::fmt(&serialized))
```
result:
```haskell
When
[ (Case
(Deposit
(Role "bank")
(Role "bank")
(Token "" "")
(Constant 42000000)
)
(When
[ (Case
(Choice
(ChoiceId "winner"
(Role "bank")
)
[(Bound 1 1)])
(Pay
(Role "bank")
(Party
(Role "P1")
)
(Token "" "")
(Constant 42000000)
Close)
)
,
(Case
(Choice
(ChoiceId "winner"
(Role "bank")
)
[(Bound 2 2)])
(Pay
(Role "bank")
(Party
(Role "P2")
)
(Token "" "")
(Constant 42000000)
Close)
)
,
(Case
(Choice
(ChoiceId "winner"
(Role "bank")
)
[(Bound 3 3)])
(Pay
(Role "bank")
(Party
(Role "P3")
)
(Token "" "")
(Constant 42000000)
Close)
)
,
(Case
(Choice
(ChoiceId "winner"
(Role "bank")
)
[(Bound 4 4)])
(Pay
(Role "bank")
(Party
(Role "P4")
)
(Token "" "")
(Constant 42000000)
Close)
)
,
(Case
(Choice
(ChoiceId "winner"
(Role "bank")
)
[(Bound 5 5)])
(Pay
(Role "bank")
(Party
(Role "P5")
)
(Token "" "")
(Constant 42000000)
Close)
)
,
(Case
(Choice
(ChoiceId "winner"
(Role "bank")
)
[(Bound 6 6)])
(Pay
(Role "bank")
(Party
(Role "P6")
)
(Token "" "")
(Constant 42000000)
Close)
)
,
(Case
(Choice
(ChoiceId "winner"
(Role "bank")
)
[(Bound 7 7)])
(Pay
(Role "bank")
(Party
(Role "P7")
)
(Token "" "")
(Constant 42000000)
Close)
)
,
(Case
(Choice
(ChoiceId "winner"
(Role "bank")
)
[(Bound 8 8)])
(Pay
(Role "bank")
(Party
(Role "P8")
)
(Token "" "")
(Constant 42000000)
Close)
)
,
(Case
(Choice
(ChoiceId "winner"
(Role "bank")
)
[(Bound 9 9)])
(Pay
(Role "bank")
(Party
(Role "P9")
)
(Token "" "")
(Constant 42000000)
Close)
)
,
(Case
(Choice
(ChoiceId "winner"
(Role "bank")
)
(Role "P10")
)
(Token "" "")
(Constant 42000000)
Close)
) ] 1673186510225 Close)
) ] 1673100110225 Close
```