From 99e0a71504456976ba88040f5d1d3bbc347694ea Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sun, 5 Mar 2023 06:35:20 +0100 Subject: Rename `iced_native` to `iced_runtime` --- runtime/src/system/action.rs | 39 +++++++++++++++++++++++++++++++++++++++ runtime/src/system/information.rs | 29 +++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 runtime/src/system/action.rs create mode 100644 runtime/src/system/information.rs (limited to 'runtime/src/system') diff --git a/runtime/src/system/action.rs b/runtime/src/system/action.rs new file mode 100644 index 00000000..dea9536f --- /dev/null +++ b/runtime/src/system/action.rs @@ -0,0 +1,39 @@ +use crate::system; + +use iced_futures::MaybeSend; +use std::fmt; + +/// An operation to be performed on the system. +pub enum Action { + /// Query system information and produce `T` with the result. + QueryInformation(Box>), +} + +pub trait Closure: Fn(system::Information) -> T + MaybeSend {} + +impl Closure for T where T: Fn(system::Information) -> O + MaybeSend {} + +impl Action { + /// Maps the output of a system [`Action`] using the provided closure. + pub fn map( + self, + f: impl Fn(T) -> A + 'static + MaybeSend + Sync, + ) -> Action + where + T: 'static, + { + match self { + Self::QueryInformation(o) => { + Action::QueryInformation(Box::new(move |s| f(o(s)))) + } + } + } +} + +impl fmt::Debug for Action { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::QueryInformation(_) => write!(f, "Action::QueryInformation"), + } + } +} diff --git a/runtime/src/system/information.rs b/runtime/src/system/information.rs new file mode 100644 index 00000000..93e7a5a4 --- /dev/null +++ b/runtime/src/system/information.rs @@ -0,0 +1,29 @@ +/// Contains informations about the system (e.g. system name, processor, memory, graphics adapter). +#[derive(Clone, Debug)] +pub struct Information { + /// The operating system name + pub system_name: Option, + /// Operating system kernel version + pub system_kernel: Option, + /// Long operating system version + /// + /// Examples: + /// - MacOS 10.15 Catalina + /// - Windows 10 Pro + /// - Ubuntu 20.04 LTS (Focal Fossa) + pub system_version: Option, + /// Short operating system version number + pub system_short_version: Option, + /// Detailed processor model information + pub cpu_brand: String, + /// The number of physical cores on the processor + pub cpu_cores: Option, + /// Total RAM size, KB + pub memory_total: u64, + /// Memory used by this process, KB + pub memory_used: Option, + /// Underlying graphics backend for rendering + pub graphics_backend: String, + /// Model information for the active graphics adapter + pub graphics_adapter: String, +} -- cgit