ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

rust: 枚举

rust: 枚举 //!# encoding: utf-8 //!# 版权所有 2026 ©涂聚文有限公司™ ® //!# 许可信息查看言語成了邀功盡責的功臣還需要行爲每日來值班嗎 //!# 描述Design Patterns //!# Author : geovindu,Geovin Du 涂聚文. //!# IDE : RustRover 2025.1.1 Rust rustc 1.98.1 //!# os : windows 10 //!# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j //!# Datetime : 2026/9/25 20:54 //!# User : geovindu //!# Product : RustRover //!# Project : RustDesignPatterns //!# File : check_patterns.rs // encoding: utf-8 // 版权所有 2026 ©涂聚文有限公司™ ® // Author : geovindu,Geovin Du 涂聚文. // 设计模式枚举调度各bll demo对标Python CheckPatterns.py use crate::bll; use crate::lang::{PATTERN_ENUM_MAP,current_lang_code}; use tokio; #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub enum DesignPattern { Memento, Command, State, TemplateMethod, Visitor, Strategy, Observe, Mediator, Iterator, ChainofResponsibility, Proxy, Flyweight, Facade, Decorator, Composite, Singleton, Prototype, Bridge, Adapter, Builder, AbstractFactory, Factory, SimpleFactory, FactoryMethod, NullObject, Interpreter, Registry, Borg, LazyEvaluation, Pool, ConditionVariable, Mutex, Monitor, ReadWriteLock, Semaphore, NBarrier, BoundedParallelism, Broadcast, Coroutines, Generators, Reactor, Parallelism, ProducerConsumer, FanIn, FanOut, Pipeline, WorkerPool, FuturesPromises, PublishSubscribe, PushPull, Bulkheads, CircuitBreaker, Deadline, FailFast, Handshaking, SteadyState, TimingFunctions, FunctionalOptions, CascadingFailures, ThreadPool, Watchdog, Barrier, Future, MessageQueue, RateLimiter, Retry, AntiGodObject, AntiSpaghetti, AntiLavaFlow, } impl DesignPattern { /// 枚举名称转中文对标Python _name_to_cn pub fn name_to_cn(self)-String{ let name format!({:?},self); let map PATTERN_ENUM_MAP.get().unwrap(); if let Some(arr) map.get(name.as_str()){ let idx match current_lang_code(){ 10, 21, _2, }; arr[idx].to_string() }else{ name } } /// 执行demo示例对标 show_example() pub fn show_example(self){ println!(\n 展示【{} Pattern{}】示例 ,format!({:?},self),self.name_to_cn()); match self { DesignPattern::Memento bll::memento_bll::MementoBll::demo(), DesignPattern::Command bll::command_bll::CommandBll::demo(), DesignPattern::State bll::state_bll::StateBll::demo(), DesignPattern::TemplateMethod bll::templatemethod_bll::TemplateMethodBll::demo(), DesignPattern::Visitor bll::visitor_bll::VisitorBll::demo(), DesignPattern::Strategy bll::strategy_bll::StrategyBll::demo(), DesignPattern::Observe bll::observe_bll::ObserveBll::demo(), DesignPattern::Mediator bll::mediator_bll::MediatorBll::demo(), DesignPattern::Iterator bll::iterator_bll::IteratorBll::demo(), DesignPattern::ChainofResponsibility bll::chainofresponsibility_bll::ChainofResponsibilityBll::dudemo(), DesignPattern::Proxy bll::proxy_bll::ProxyBll::demo(), DesignPattern::Flyweight bll::flyweight_bll::FlyweightBll::demo(), DesignPattern::Facade bll::facade_bll::FacadeBll::demo(), DesignPattern::Decorator bll::decorator_bll::DecoratorBll::demo(), DesignPattern::Composite bll::composite_bll::CompositeBll::demo(), DesignPattern::Singleton bll::singleton_bll::SingletonBll::demo(), DesignPattern::Prototype bll::prototype_bll::PrototypeBll::demo(), DesignPattern::Bridge bll::bridge_bll::BridgeBll::demo(), DesignPattern::Adapter bll::adapter_bll::AdapterBll::demo(), DesignPattern::Builder bll::builder_bll::BuilderBll::demo(), DesignPattern::AbstractFactory bll::abstractfactory_bll::AbstractFactoryBll::demo(), DesignPattern::Factory bll::factory_bll::FactoryBll::demo(), DesignPattern::SimpleFactory bll::simplefactory_bll::SimpleFactoryBll::demo(), DesignPattern::FactoryMethod bll::factorymethod_bll::FactoryMethodBll::demo(), DesignPattern::NullObject bll::nullobject_bll::NullObjectBll::demo(), DesignPattern::Interpreter bll::interpreter_bll::InterpreterBll::demo(), DesignPattern::Registry bll::registry_bll::RegistryBll::demo(), DesignPattern::ConditionVariable bll::conditionvariable_bll::ConditionVariableBll::demo(), DesignPattern::Mutex bll::mutex_bll::MutexBll::demo(), DesignPattern::Monitor bll::monitor_bll::MonitorBll::demo(), DesignPattern::ReadWriteLock bll::readwritelock_bll::ReadWriteLockBll::demo(), DesignPattern::Semaphore bll::semaphore_bll::SemaphoreBll::demo(), DesignPattern::NBarrier bll::nbarrier_bll::NBarrierBll::demo(), DesignPattern::BoundedParallelism bll::boundedparallelism_bll::BoundedParallelismBll::demo(), DesignPattern::Broadcast bll::broadcast_bll::BroadcastBll::demo(), DesignPattern::Coroutines { // 异步demotokio运行对标asyncio.run let rt tokio::runtime::Runtime::new().unwrap(); rt.block_on(bll::coroutines_bll::CoroutinesBll::demo()); } DesignPattern::Generators bll::generators_bll::GeneratorsBll::demo(), DesignPattern::Reactor bll::reactor_bll::ReactorBll::demo(), DesignPattern::Parallelism bll::parallelism_bll::ParallelismBll::demo(), DesignPattern::ProducerConsumer bll::producerconsumer_bll::ProducerConsumerBll::demo(), DesignPattern::FanIn bll::fanin_bll::FanInBll::demo(), DesignPattern::FanOut bll::fanout_bll::FanOutBll::demo(), DesignPattern::Pipeline bll::pipeline_bll::PipelineBll::demo(), DesignPattern::WorkerPool bll::workerpool_bll::WorkerPoolBll::demo(), DesignPattern::FuturesPromises bll::futurespromises_bll::FuturesPromisesBll::demo(), DesignPattern::PublishSubscribe bll::publishsubscribe_bll::PublishSubscribeBll::demo(), DesignPattern::PushPull bll::pushpull_bll::PushPullBll::demo(), DesignPattern::Bulkheads bll::bulkheads_bll::BulkheadsBll::demo(), DesignPattern::CircuitBreaker bll::circuitbreaker_bll::CircuitBreakerBll::demo(), DesignPattern::Deadline bll::deadline_bll::DeadlineBll::demo(), DesignPattern::FailFast bll::failfast_bll::FailFastBll::demo(), DesignPattern::Handshaking bll::handshaking_bll::HandshakingBll::demo(), DesignPattern::SteadyState bll::steadystate_bll::SteadyStateBll::demo(), DesignPattern::TimingFunctions bll::timingfunctions_bll::TimingFunctionsBll::demo(), DesignPattern::FunctionalOptions bll::functionaloptions_bll::FunctionalOptionsBll::demo(), DesignPattern::CascadingFailures bll::cascadingfailures_bll::CascadingFailuresBll::demo(), DesignPattern::ThreadPool bll::threadpool_bll::ThreadPoolBll::demo(), DesignPattern::Watchdog bll::watchdog_bll::WatchdogBll::demo(), DesignPattern::Barrier bll::barrier_bll::BarrierBll::demo(), DesignPattern::Future bll::future_bll::FutureBll::demo(), DesignPattern::MessageQueue bll::messagequeue_bll::MessageQueueBll::demo(), DesignPattern::RateLimiter bll::ratelimiter_bll::RateLimiterBll::demo(), DesignPattern::Retry bll::retry_bll::RetryBll::demo(), DesignPattern::AntiGodObject bll::antigodobject_bll::AntiGodObjectBll::demo(), DesignPattern::AntiSpaghetti bll::antispaghetti_bll::AntiSpaghettiBll::demo(), DesignPattern::AntiLavaFlow bll::antilavaflow_bll::AntiLavaFlowBll::demo(), DesignPattern::Borg unimplemented!(Borg模式待实现), DesignPattern::LazyEvaluation unimplemented!(LazyEvaluation模式待实现), DesignPattern::Pool unimplemented!(对象池简写模式待实现), } } /// 把枚举转为迭代列表用于菜单遍历 pub fn all() - static [DesignPattern] { [ DesignPattern::Memento, DesignPattern::Command, DesignPattern::State, DesignPattern::TemplateMethod, DesignPattern::Visitor, DesignPattern::Strategy, DesignPattern::Observe, DesignPattern::Mediator, DesignPattern::Iterator, DesignPattern::ChainofResponsibility, DesignPattern::Proxy, DesignPattern::Flyweight, DesignPattern::Facade, DesignPattern::Decorator, DesignPattern::Composite, DesignPattern::Singleton, DesignPattern::Prototype, DesignPattern::Bridge, DesignPattern::Adapter, DesignPattern::Builder, DesignPattern::AbstractFactory, DesignPattern::Factory, DesignPattern::SimpleFactory, DesignPattern::FactoryMethod, DesignPattern::NullObject, DesignPattern::Interpreter, DesignPattern::Registry, DesignPattern::Borg, DesignPattern::LazyEvaluation, DesignPattern::Pool, DesignPattern::ConditionVariable, DesignPattern::Mutex, DesignPattern::Monitor, DesignPattern::ReadWriteLock, DesignPattern::Semaphore, DesignPattern::NBarrier, DesignPattern::BoundedParallelism, DesignPattern::Broadcast, DesignPattern::Coroutines, DesignPattern::Generators, DesignPattern::Reactor, DesignPattern::Parallelism, DesignPattern::ProducerConsumer, DesignPattern::FanIn, DesignPattern::FanOut, DesignPattern::Pipeline, DesignPattern::WorkerPool, DesignPattern::FuturesPromises, DesignPattern::PublishSubscribe, DesignPattern::PushPull, DesignPattern::Bulkheads, DesignPattern::CircuitBreaker, DesignPattern::Deadline, DesignPattern::FailFast, DesignPattern::Handshaking, DesignPattern::SteadyState, DesignPattern::TimingFunctions, DesignPattern::FunctionalOptions, DesignPattern::CascadingFailures, DesignPattern::ThreadPool, DesignPattern::Watchdog, DesignPattern::Barrier, DesignPattern::Future, DesignPattern::MessageQueue, DesignPattern::RateLimiter, DesignPattern::Retry, DesignPattern::AntiGodObject, DesignPattern::AntiSpaghetti, DesignPattern::AntiLavaFlow, ] } }//!# encoding: utf-8 //!# 版权所有 2026 ©涂聚文有限公司™ ® //!# 许可信息查看言語成了邀功盡責的功臣還需要行爲每日來值班嗎 //!# 描述Design Patterns //!# Author : geovindu,Geovin Du 涂聚文. //!# IDE : RustRover 2025.1.1 Rust rustc 1.98.1 //!# os : windows 10 //!# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j //!# Datetime : 2026/9/25 20:52 //!# User : geovindu //!# Product : RustRover //!# Project : RustDesignPatterns //!# File : main.rs // encoding: utf-8 // 版权所有 2026 ©涂聚文有限公司™ ® // Author : geovindu,Geovin Du 涂聚文. // IDE : VS Code / RustRover // os : windows 10 // Project : pydesignpattern-rs use std::io; use controller::DesignPattern; use crate::lang::{init_lang_map,set_language}; mod controller; mod lang; mod bll; /// 返回 (序列号, OptionDesignPattern)0退出 fn select_design_pattern()-(usize,OptionDesignPattern){ println!({},lang::TITLE_MENU); println!({} 0/{} {},lang::PROMPT_INPUT_NUM,lang::KEY_QUIT,lang::TITLE_EXIT_OPT); let pattern_list DesignPattern::all(); for (idx,pat) in pattern_list.iter().enumerate(){ let display_name pat.name_to_cn(); println!({}. {}{:?},idx1,display_name,pat); } println!(0. {},lang::TITLE_EXIT_OPT); loop{ println!(\n{},lang::PROMPT_INPUT_NUM); let mut buf String::new(); io::stdin().read_line(mut buf).unwrap(); let input buf.trim(); if input 0 || input.eq_ignore_ascii_case(q){ println!( {},lang::MSG_EXIT_PROGRAM); return (0,None); } let Ok(choice) input.parse::usize() else { println!({},lang::MSG_INVALID_INPUT); continue; }; let max pattern_list.len(); if choice 1 choice max{ let selected pattern_list[choice-1]; let cn_name selected.name_to_cn(); println!({}{}对应{},lang::MSG_SELECTED_ITEM,choice,cn_name); return (choice,Some(selected)); }else{ println!({} 1-{},lang::MSG_INVALID_INPUT,max); } } } /// 是否继续选择 fn ask_continue()-bool{ loop{ println!({},lang::PROMPT_CONTINUE_ASK); let mut buf String::new(); io::stdin().read_line(mut buf).unwrap(); let input buf.trim().to_lowercase(); if input lang::KEY_YES{ return true; }else if input lang::KEY_NO{ println!( {},lang::MSG_EXIT_PROGRAM); return false; }else{ println!({} {}/{},lang::MSG_INVALID_INPUT,lang::KEY_YES,lang::KEY_NO); } } } fn main() { // 初始化语言映射 init_lang_map(); // 默认简体中文 set_language(1); println!({},lang::PROMPT_CHOOSE_LANG); let mut buf String::new(); io::stdin().read_line(mut buf).unwrap(); let code buf.trim().parse::u8().unwrap_or(1); set_language(code); println!({},lang::TITLE_MAIN); loop{ let (selected_num, selected_pattern) select_design_pattern(); if selected_num 0{ println!( {},lang::MSG_EXIT_PROGRAM); break; } let pat selected_pattern.unwrap(); let en_name format!({:?},pat); let cn_name pat.name_to_cn(); println!({},lang::MSG_SHOW_PATTERN_HEAD.replace({},{}).replace({},en_name).replace({},cn_name)); pat.show_example(); println!(\n 本次选择的序列号是{},selected_num); if !ask_continue(){ break; } } println!(hi,welcome geovindu.); }
返回列表