MCPcopy Create free account
hub / github.com/dtolnay/thiserror / from_initializer

Function from_initializer

impl/src/expand.rs:536–563  ·  view source on GitHub ↗
(
    from_field: &Field,
    backtrace_field: Option<&Field>,
    source_var: &Ident,
)

Source from the content-addressed store, hash-verified

534}
535
536fn from_initializer(
537 from_field: &Field,
538 backtrace_field: Option<&Field>,
539 source_var: &Ident,
540) -> TokenStream {
541 let from_member = &from_field.member;
542 let some_source = if type_is_option(from_field.ty) {
543 quote!(::core::option::Option::Some(#source_var))
544 } else {
545 quote!(#source_var)
546 };
547 let backtrace = backtrace_field.map(|backtrace_field| {
548 let backtrace_member = &backtrace_field.member;
549 if type_is_option(backtrace_field.ty) {
550 quote! {
551 #backtrace_member: ::core::option::Option::Some(::thiserror::#private::Backtrace::capture()),
552 }
553 } else {
554 quote! {
555 #backtrace_member: ::core::convert::From::from(::thiserror::#private::Backtrace::capture()),
556 }
557 }
558 });
559 quote!({
560 #from_member: #some_source,
561 #backtrace
562 })
563}
564
565fn type_is_option(ty: &Type) -> bool {
566 type_parameter_of_option(ty).is_some()

Callers 2

impl_structFunction · 0.85
impl_enumFunction · 0.85

Calls 1

type_is_optionFunction · 0.85

Tested by

no test coverage detected