From e3aeb6a1c9955eee2c396230317e63becd24ec6a Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Thu, 26 Feb 2026 00:51:45 +0800 Subject: Replace string type identifiers with TypeId for command output matching --- templates/_override_renderer_dispatcher.rs.template | 1 + templates/_override_renderer_entry.rs.template | 10 +++++----- templates/_specific_renderer_matching.rs.template | 16 +++++++--------- 3 files changed, 13 insertions(+), 14 deletions(-) (limited to 'templates') diff --git a/templates/_override_renderer_dispatcher.rs.template b/templates/_override_renderer_dispatcher.rs.template index 64d2f40..b22c957 100644 --- a/templates/_override_renderer_dispatcher.rs.template +++ b/templates/_override_renderer_dispatcher.rs.template @@ -1,3 +1,4 @@ +// Auto generated by build.rs match renderer_override { // MATCH // -- TEMPLATE START -- diff --git a/templates/_override_renderer_entry.rs.template b/templates/_override_renderer_entry.rs.template index 8b2130d..7912cb0 100644 --- a/templates/_override_renderer_entry.rs.template +++ b/templates/_override_renderer_entry.rs.template @@ -1,13 +1,13 @@ // Auto generated by build.rs -match type_name.as_str() { +match type_id { // MATCHING // -- TEMPLATE START -- - "JVOutputTypeName" => { + type_id if type_id == std::any::TypeId::of::() => { let concrete_data = data .downcast::() .map_err(|_| CmdProcessError::DowncastFailed)?; - include!("../render/_override_renderer_dispatcher.rs") - } + include!("../render/_override_renderer_dispatcher.rs").map_err(CmdProcessError::Render) + }, // -- TEMPLATE END -- - _ => return Err(CmdProcessError::NoMatchingCommand), + _ => Err(CmdProcessError::NoMatchingCommand) } diff --git a/templates/_specific_renderer_matching.rs.template b/templates/_specific_renderer_matching.rs.template index 9b3765f..4f1c7d2 100644 --- a/templates/_specific_renderer_matching.rs.template +++ b/templates/_specific_renderer_matching.rs.template @@ -1,14 +1,12 @@ -match type_name_str { +// Auto generated by build.rs +match type_id { // MATCHING // -- TEMPLATE START -- - "OutputTypeName" => { + type_id if type_id == std::any::TypeId::of::() => { RendererType::render( - &data - .downcast::() - .unwrap(), - ) - .await - } + &data.downcast::() + .unwrap()).await + }, // -- TEMPLATE END -- - _ => Err(CmdRenderError::RendererNotFound(type_name)), + _ => Err(CmdRenderError::RendererNotFound(format!("{:?}", type_id))) } -- cgit