bon_macros/collections/
set.rs1use crate::util::prelude::*;
2use syn::punctuated::Punctuated;
3use syn::{Expr, Token};
4
5pub(crate) fn generate(entries: Punctuated<Expr, Token![,]>) -> TokenStream {
6 let error = super::validate_expressions_are_unique("value in the set", &entries);
7 let entries = entries.into_iter();
8 let output = quote! {
9 ::core::iter::FromIterator::from_iter([
10 #(::core::convert::Into::into(#entries)),*
11 ])
12 };
13
14 error
18 .map(|err| {
19 let err = err.write_errors();
20 quote! {{
21 #err
22 #output
23 }}
24 })
25 .unwrap_or(output)
26}