|
@@ -356,15 +356,17 @@ impl Field {
|
|
|
Ty::Account(AccountTy { boxed, .. }) => {
|
|
|
let stream = if checked {
|
|
|
quote! {
|
|
|
- #container_ty::try_from(
|
|
|
- &#field,
|
|
|
- ).map_err(|e| e.with_account_name(#field_str))?
|
|
|
+ match #container_ty::try_from(&#field) {
|
|
|
+ Ok(val) => val,
|
|
|
+ Err(e) => return Err(e.with_account_name(#field_str))
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
quote! {
|
|
|
- #container_ty::try_from_unchecked(
|
|
|
- &#field,
|
|
|
- ).map_err(|e| e.with_account_name(#field_str))?
|
|
|
+ match #container_ty::try_from_unchecked(&#field) {
|
|
|
+ Ok(val) => val,
|
|
|
+ Err(e) => return Err(e.with_account_name(#field_str))
|
|
|
+ }
|
|
|
}
|
|
|
};
|
|
|
if *boxed {
|
|
@@ -378,48 +380,51 @@ impl Field {
|
|
|
Ty::CpiAccount(_) => {
|
|
|
if checked {
|
|
|
quote! {
|
|
|
- #container_ty::try_from(
|
|
|
- &#field,
|
|
|
- ).map_err(|e| e.with_account_name(#field_str))?
|
|
|
+ match #container_ty::try_from(&#field) {
|
|
|
+ Ok(val) => val,
|
|
|
+ Err(e) => return Err(e.with_account_name(#field_str))
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
quote! {
|
|
|
- #container_ty::try_from_unchecked(
|
|
|
- &#field,
|
|
|
- ).map_err(|e| e.with_account_name(#field_str))?
|
|
|
+ match #container_ty::try_from_unchecked(&#field) {
|
|
|
+ Ok(val) => val,
|
|
|
+ Err(e) => return Err(e.with_account_name(#field_str))
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
Ty::AccountLoader(_) => {
|
|
|
if checked {
|
|
|
quote! {
|
|
|
- #container_ty::try_from(
|
|
|
- &#field,
|
|
|
- ).map_err(|e| e.with_account_name(#field_str))?
|
|
|
+ match #container_ty::try_from(&#field) {
|
|
|
+ Ok(val) => val,
|
|
|
+ Err(e) => return Err(e.with_account_name(#field_str))
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
quote! {
|
|
|
- #container_ty::try_from_unchecked(
|
|
|
- #owner_addr,
|
|
|
- &#field,
|
|
|
- ).map_err(|e| e.with_account_name(#field_str))?
|
|
|
+ match #container_ty::try_from_unchecked(#owner_addr, &#field) {
|
|
|
+ Ok(val) => val,
|
|
|
+ Err(e) => return Err(e.with_account_name(#field_str))
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
_ => {
|
|
|
if checked {
|
|
|
quote! {
|
|
|
- #container_ty::try_from(
|
|
|
- #owner_addr,
|
|
|
- &#field,
|
|
|
- ).map_err(|e| e.with_account_name(#field_str))?
|
|
|
+ match #container_ty::try_from(#owner_addr, &#field) {
|
|
|
+ Ok(val) => val,
|
|
|
+ Err(e) => return Err(e.with_account_name(#field_str))
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
quote! {
|
|
|
- #container_ty::try_from_unchecked(
|
|
|
- #owner_addr,
|
|
|
- &#field,
|
|
|
- ).map_err(|e| e.with_account_name(#field_str))?
|
|
|
+ match #container_ty::try_from_unchecked(#owner_addr, &#field) {
|
|
|
+ Ok(val) => val,
|
|
|
+ Err(e) => return Err(e.with_account_name(#field_str))
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|