dao_pre_propose_base/
helpers.rs1use cosmwasm_std::{Addr, Deps, StdResult};
2
3pub fn add_and_remove_addresses(
6 deps: Deps,
7 list: &mut Vec<Addr>,
8 add: Option<Vec<String>>,
9 remove: Option<Vec<String>>,
10) -> StdResult<()> {
11 if let Some(add) = add {
12 let mut addrs = add
13 .iter()
14 .map(|addr| deps.api.addr_validate(addr))
15 .collect::<StdResult<Vec<Addr>>>()?;
16
17 list.append(&mut addrs);
18 list.sort();
19 list.dedup();
20 }
21
22 if let Some(remove) = remove {
23 let addrs = remove
24 .iter()
25 .map(|addr| deps.api.addr_validate(addr))
26 .collect::<StdResult<Vec<Addr>>>()?;
27
28 list.retain(|a| !addrs.contains(a));
29 }
30
31 Ok(())
32}