Skip to content

Commit

Permalink
optimize field init error
Browse files Browse the repository at this point in the history
  • Loading branch information
qpalzmqaz123 committed Nov 29, 2022
1 parent ee22b75 commit 726093b
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 4 deletions.
2 changes: 2 additions & 0 deletions rnest-error/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ pub enum Error {
CircularDependency(String),
#[error("Try to inject private provider: `{0}`")]
InjectPrivateProvider(String),
#[error("Init field <{0}.{1}> error: `{2}`")]
InitField(String, String, String),
#[error("User error: `{0}`")]
User(String),
#[error("Unknown error: `{0}`")]
Expand Down
8 changes: 5 additions & 3 deletions rnest-macros/src/provider.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ impl Provider {
let fields: Vec<TokenStream> = self
.fields
.iter()
.map(|(name, field)| self.gen_field(name, field))
.map(|(name, field)| self.gen_field(&self.name, name, field))
.collect();
let on_module_init_expr = if let Some(func) = &self.on_module_init {
let func = format_ident!("{}", func);
Expand Down Expand Up @@ -204,7 +204,7 @@ impl Provider {
None
}

fn gen_field(&self, name: &String, field: &Field) -> TokenStream {
fn gen_field(&self, provider_name: &str, name: &str, field: &Field) -> TokenStream {
let name_id = format_ident!("{}", name);
let field_type = &field.r#type;

Expand All @@ -227,7 +227,9 @@ impl Provider {
.collect::<Vec<_>>();

quote! {
#name_id: (#closure)(#(#args),*).await?
#name_id: (#closure)(#(#args),*)
.await
.map_err(|e| rnest::Error::InitField(#provider_name.to_owned(), #name.to_owned(), e.to_string()))?
}
} else {
quote! {
Expand Down
2 changes: 1 addition & 1 deletion rnest/examples/complex/rest_api/user_controller.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ pub struct UserController {
user: Arc<dyn User>,

#[default_fn(|user: Arc<dyn User>| async move {
rnest::Result::<usize>::Ok(user.get_list().await.len())
Result::<usize, String>::Ok(user.get_list().await.len())
})]
user_count_on_startup: usize,
}
Expand Down

0 comments on commit 726093b

Please sign in to comment.