diff --git a/src/image/mod.rs b/src/image/mod.rs index 571e10c78a..f48fbd68de 100644 --- a/src/image/mod.rs +++ b/src/image/mod.rs @@ -20,11 +20,12 @@ pub use descriptor::*; pub use index::*; pub use manifest::*; pub use oci_layout::*; +use strum_macros::EnumIter; pub use version::*; /// Media types used by OCI image format spec. Values MUST comply with RFC 6838, /// including the naming requirements in its section 4.2. -#[derive(Clone, Debug, PartialEq, Eq)] +#[derive(Clone, Debug, PartialEq, Eq, EnumIter)] pub enum MediaType { /// MediaType Descriptor specifies the media type for a content descriptor. Descriptor, @@ -201,7 +202,7 @@ impl<'de> Deserialize<'de> for MediaType { /// Name of the target operating system. #[allow(missing_docs)] -#[derive(Clone, Debug, PartialEq, Eq)] +#[derive(Clone, Debug, PartialEq, Eq, EnumIter)] pub enum Os { AIX, Android, @@ -304,7 +305,7 @@ impl Default for Os { } /// Name of the CPU target architecture. -#[derive(Clone, Debug, PartialEq, Eq)] +#[derive(Clone, Debug, PartialEq, Eq, EnumIter)] pub enum Arch { /// 32 bit x86, little-endian #[allow(non_camel_case_types)] diff --git a/src/runtime/capability.rs b/src/runtime/capability.rs index 5cbb27d227..91cfd5da34 100644 --- a/src/runtime/capability.rs +++ b/src/runtime/capability.rs @@ -4,12 +4,12 @@ use serde::{ }; use std::collections::HashSet; -use strum_macros::{Display, EnumString}; +use strum_macros::{Display, EnumIter, EnumString}; /// Capabilities is a unique set of Capability values. pub type Capabilities = HashSet; -#[derive(Clone, Copy, Debug, EnumString, Eq, Display, Hash, PartialEq, Serialize)] +#[derive(Clone, Copy, Debug, EnumString, Eq, Display, Hash, PartialEq, Serialize, EnumIter)] /// All available capabilities. /// /// For the purpose of performing permission checks, traditional UNIX diff --git a/src/runtime/linux.rs b/src/runtime/linux.rs index 0f97e73cdc..87d3ae5d02 100644 --- a/src/runtime/linux.rs +++ b/src/runtime/linux.rs @@ -4,7 +4,7 @@ use derive_builder::Builder; use getset::{CopyGetters, Getters, MutGetters, Setters}; use serde::{Deserialize, Serialize}; use std::{collections::HashMap, fmt::Display, path::PathBuf, vec}; -use strum_macros::{Display as StrumDisplay, EnumString}; +use strum_macros::{Display as StrumDisplay, EnumIter, EnumString}; #[derive( Builder, Clone, Debug, Deserialize, Eq, Getters, MutGetters, Setters, PartialEq, Serialize, @@ -187,7 +187,7 @@ pub struct LinuxIdMapping { size: u32, } -#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, EnumString)] +#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, EnumString, EnumIter)] #[strum(serialize_all = "lowercase")] #[serde(rename_all = "lowercase")] /// Device types @@ -791,7 +791,9 @@ pub struct LinuxRdma { hca_objects: Option, } -#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, Hash, StrumDisplay)] +#[derive( + Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, Hash, StrumDisplay, EnumIter, +)] #[strum(serialize_all = "lowercase")] #[serde(rename_all = "snake_case")] /// Available Linux namespaces. @@ -1041,7 +1043,9 @@ pub struct LinuxSeccomp { syscalls: Option>, } -#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, StrumDisplay, EnumString)] +#[derive( + Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, StrumDisplay, EnumString, EnumIter, +)] #[strum(serialize_all = "SCREAMING_SNAKE_CASE")] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] /// Available seccomp actions. @@ -1097,7 +1101,9 @@ impl Default for LinuxSeccompAction { } #[allow(clippy::enum_clike_unportable_variant)] -#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, StrumDisplay, EnumString)] +#[derive( + Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, StrumDisplay, EnumString, EnumIter, +)] #[strum(serialize_all = "SCREAMING_SNAKE_CASE")] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] /// Available seccomp architectures. @@ -1160,7 +1166,9 @@ pub enum Arch { ScmpArchRiscv64 = 0xc00000f3, } -#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, StrumDisplay, EnumString)] +#[derive( + Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, StrumDisplay, EnumString, EnumIter, +)] #[strum(serialize_all = "SCREAMING_SNAKE_CASE")] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] /// Available seccomp filter flags. @@ -1185,7 +1193,9 @@ pub enum LinuxSeccompFilterFlag { SeccompFilterFlagSpecAllow, } -#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, StrumDisplay, EnumString)] +#[derive( + Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, StrumDisplay, EnumString, EnumIter, +)] #[strum(serialize_all = "SCREAMING_SNAKE_CASE")] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] #[repr(u32)] @@ -1401,7 +1411,9 @@ pub struct LinuxPersonality { flags: Option>, } -#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, StrumDisplay, EnumString)] +#[derive( + Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, StrumDisplay, EnumString, EnumIter, +)] /// Define domain and flags for LinuxPersonality. pub enum LinuxPersonalityDomain { #[serde(rename = "LINUX")] diff --git a/src/runtime/process.rs b/src/runtime/process.rs index 20d197a1c1..0d76158125 100644 --- a/src/runtime/process.rs +++ b/src/runtime/process.rs @@ -8,7 +8,7 @@ use once_cell::sync::Lazy; use regex::Regex; use serde::{de, Deserialize, Deserializer, Serialize}; use std::path::PathBuf; -use strum_macros::{Display as StrumDisplay, EnumString}; +use strum_macros::{Display as StrumDisplay, EnumIter, EnumString}; #[derive( Builder, @@ -188,7 +188,9 @@ pub struct Box { width: u64, } -#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, StrumDisplay, EnumString)] +#[derive( + Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, StrumDisplay, EnumString, EnumIter, +)] #[strum(serialize_all = "SCREAMING_SNAKE_CASE")] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] #[cfg(any(target_os = "linux", target_os = "solaris"))] @@ -416,7 +418,9 @@ pub struct LinuxIOPriority { priority: i64, } -#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, StrumDisplay, EnumString)] +#[derive( + Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, StrumDisplay, EnumString, EnumIter, +)] #[strum(serialize_all = "SCREAMING_SNAKE_CASE")] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] /// IOPriorityClass represents an I/O scheduling class. @@ -505,7 +509,9 @@ impl Default for Scheduler { } } -#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, StrumDisplay, EnumString)] +#[derive( + Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, StrumDisplay, EnumString, EnumIter, +)] #[strum(serialize_all = "SCREAMING_SNAKE_CASE")] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] /// LinuxSchedulerPolicy represents different scheduling policies used with the Linux Scheduler @@ -533,7 +539,9 @@ impl Default for LinuxSchedulerPolicy { } } -#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, StrumDisplay, EnumString)] +#[derive( + Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize, StrumDisplay, EnumString, EnumIter, +)] #[strum(serialize_all = "SCREAMING_SNAKE_CASE")] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] /// LinuxSchedulerFlag represents the flags used by the Linux Scheduler.