Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bevyengine
GitHub Repository: bevyengine/bevy
Path: blob/main/crates/bevy_reflect/derive/src/impls/func/from_arg.rs
6602 views
1
use crate::where_clause_options::WhereClauseOptions;
2
use bevy_macro_utils::fq_std::FQResult;
3
use quote::quote;
4
5
pub(crate) fn impl_from_arg(where_clause_options: &WhereClauseOptions) -> proc_macro2::TokenStream {
6
let meta = where_clause_options.meta();
7
let bevy_reflect = meta.bevy_reflect_path();
8
let type_path = meta.type_path();
9
10
let (impl_generics, ty_generics, where_clause) = type_path.generics().split_for_impl();
11
let where_reflect_clause = where_clause_options.extend_where_clause(where_clause);
12
13
quote! {
14
impl #impl_generics #bevy_reflect::func::args::FromArg for #type_path #ty_generics #where_reflect_clause {
15
type This<'from_arg> = #type_path #ty_generics;
16
fn from_arg(arg: #bevy_reflect::func::args::Arg) ->
17
#FQResult<Self::This<'_>, #bevy_reflect::func::args::ArgError>
18
{
19
arg.take_owned()
20
}
21
}
22
}
23
}
24
25