Expand description
ferroui-splat
A port of Splat (https://github.com/reactiveui/splat) to Rust: the service locator that ReactiveUI and applications find their services through, the dependency resolvers behind it, logging, the detection of a unit test runner, feature usage tracking, and the application builder with its modules. It depends on nothing of the user interface of FerroUI.
The modules follow the projects of Splat:
service_location: Splat.Core’s service location: the resolver interfaces (IReadonlyDependencyResolver,IMutableDependencyResolver,IDependencyResolver), the resolvers (ModernDependencyResolver,GlobalGenericFirstDependencyResolver,InstanceGenericFirstDependencyResolver),AppLocatorand Splat’sLocator.builder: Splat.Core’sIAppBuilder,IAppInstanceandIModule, and Splat.Builder (AppBuilder).mode_detection: Splat’s mode detection (ModeDetector).application_performance_monitoring: Splat’s feature usage tracking.
Services are keyed by the type of the service, which may be a trait object
(dyn IViewLocator), and are handed out as Rc<S>. Everything is single-threaded and
reference counted, as the object model of FerroUI is: the locator, the resolvers and the
global state of Splat are per thread (docs/porting/reactive.md, section 5.1).
Re-exports§
pub use application_performance_monitoring::DefaultFeatureUsageTrackingManager;pub use application_performance_monitoring::DefaultFeatureUsageTrackingSession;pub use application_performance_monitoring::EnableFeatureUsageTrackingExt;pub use application_performance_monitoring::FeatureUsageTrackingSessionExt;pub use application_performance_monitoring::FuncFeatureUsageTrackingManager;pub use application_performance_monitoring::Guid;pub use application_performance_monitoring::IEnableFeatureUsageTracking;pub use application_performance_monitoring::IFeatureUsageTrackingManager;pub use application_performance_monitoring::IFeatureUsageTrackingSession;pub use application_performance_monitoring::IFeatureUsageTrackingSessionOf;pub use application_performance_monitoring::IViewTracking;pub use builder::AppBuilder;pub use builder::IAppBuilder;pub use builder::IAppInstance;pub use builder::IModule;pub use builder::ModuleExt;pub use builder::SplatBuilderExt;pub use logging::ActionLogger;pub use logging::ConsoleLogger;pub use logging::DebugLogger;pub use logging::DefaultLogManager;pub use logging::FullLoggerExt;pub use logging::FuncLogManager;pub use logging::IAllocationFreeErrorLogger;pub use logging::IAllocationFreeLogger;pub use logging::IEnableLogger;pub use logging::IFullLogger;pub use logging::ILogManager;pub use logging::ILogger;pub use logging::IStaticFullLogger;pub use logging::LogHost;pub use logging::LogLevel;pub use logging::LogManagerExt;pub use logging::LoggingException;pub use logging::MemoizingMRUCache;pub use logging::NullLogger;pub use logging::SplatLogManagerModule;pub use logging::SplatLoggerModule;pub use logging::StaticFullLogger;pub use logging::StaticFullLoggerExt;pub use logging::WrappingFullLogger;pub use logging::WrappingLogLevelLogger;pub use logging::WrappingPrefixLogger;pub use mode_detection::DefaultModeDetector;pub use mode_detection::IModeDetector;pub use mode_detection::Mode;pub use mode_detection::ModeDetector;pub use service_location::AppLocator;pub use service_location::DependencyResolverMixins;pub use service_location::ErasedService;pub use service_location::GlobalGenericFirstDependencyResolver;pub use service_location::IDependencyResolver;pub use service_location::IMutableDependencyResolver;pub use service_location::IReadonlyDependencyResolver;pub use service_location::InstanceGenericFirstDependencyResolver;pub use service_location::LazyDisposal;pub use service_location::Locator;pub use service_location::ModernDependencyResolver;pub use service_location::MutableDependencyResolverExt;pub use service_location::ReadonlyDependencyResolverExt;pub use service_location::RegistrationCallback;pub use service_location::ResolverMixins;pub use service_location::ServiceFactory;pub use service_location::ServiceLocationInitializationExt;pub use service_location::ServiceType;
Modules§
- application_
performance_ monitoring - Feature usage tracking (
Splat/ApplicationPerformanceMonitoring): the interfaces that the adapters of monitoring services implement, and the default implementation, which logs. - builder
- The application builder: Splat.Core’s
IAppBuilder,IAppInstanceandIModule, and Splat.Builder’sAppBuilderandSplatBuilderExtensions. - logging
- Logging (Splat.Logging): the logger interfaces, the loggers Splat ships, the log managers that
hand out a logger per type,
IEnableLoggerandLogHost. - mode_
detection - Mode detection (
Splat/ModeDetection): whether the code runs under a unit test runner. - service_
location - Service location (
Splat.Core/ServiceLocationandSplat/ServiceLocation): the interfaces of a dependency resolver, the three resolvers of Splat, the locator that holds the current one (AppLocator,Locator) and the mixins over them.