wslplugins_rs/wsl_user_configuration/
enumflags2.rs1use super::WSLUserConfiguration;
3use enumflags2::{bitflags, BitFlags};
4
5#[bitflags]
22#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
23#[repr(u32)]
24pub enum WSLUserConfigurationFlags {
25 CustomKernel = wslpluginapi_sys::WSLUserConfiguration_WSLUserConfigurationCustomKernel as u32,
27
28 CustomKernelCommandLine =
30 wslpluginapi_sys::WSLUserConfiguration_WSLUserConfigurationCustomKernelCommandLine as u32,
31}
32
33impl From<WSLUserConfiguration> for BitFlags<WSLUserConfigurationFlags> {
34 #[inline]
35 fn from(value: WSLUserConfiguration) -> Self {
36 BitFlags::from_bits_truncate(value.0.cast_unsigned())
37 }
38}
39
40impl From<BitFlags<WSLUserConfigurationFlags>> for WSLUserConfiguration {
41 #[inline]
42 fn from(value: BitFlags<WSLUserConfigurationFlags>) -> Self {
43 (value.bits().cast_signed()).into()
44 }
45}
46
47impl WSLUserConfiguration {
48 #[inline]
50 #[must_use]
51 pub fn into_enumflags2(self) -> BitFlags<WSLUserConfigurationFlags> {
52 BitFlags::from(self)
53 }
54}
55
56#[cfg(test)]
57mod tests {
58 use super::*;
59 use enumflags2::BitFlags;
60 #[test]
61 fn test_default_enumflags2() {
62 let default_config = BitFlags::<WSLUserConfigurationFlags>::default();
63 assert_eq!(default_config, BitFlags::empty());
64 assert!(default_config.is_empty());
65 }
66
67 #[test]
68 fn test_set_and_clear_enumflags2() {
69 let mut config = BitFlags::<WSLUserConfigurationFlags>::default();
70 config.insert(WSLUserConfigurationFlags::CustomKernel);
71 assert!(config.contains(WSLUserConfigurationFlags::CustomKernel));
72 config.remove(WSLUserConfigurationFlags::CustomKernel);
73 assert!(!config.contains(WSLUserConfigurationFlags::CustomKernel));
74 }
75
76 #[test]
77 fn test_multiple_flags_enumflags2() {
78 let mut config = BitFlags::<WSLUserConfigurationFlags>::default();
79 config.insert(
80 WSLUserConfigurationFlags::CustomKernel
81 | WSLUserConfigurationFlags::CustomKernelCommandLine,
82 );
83 assert!(config.contains(WSLUserConfigurationFlags::CustomKernel));
84 assert!(config.contains(WSLUserConfigurationFlags::CustomKernelCommandLine));
85 config.remove(WSLUserConfigurationFlags::CustomKernel);
86 assert!(!config.contains(WSLUserConfigurationFlags::CustomKernel));
87 assert!(config.contains(WSLUserConfigurationFlags::CustomKernelCommandLine));
88 }
89
90 #[test]
91 fn test_conversion_between_flags_and_configuration() {
92 let config = WSLUserConfiguration(3); let flags: BitFlags<WSLUserConfigurationFlags> = config.into();
94 assert!(flags.contains(WSLUserConfigurationFlags::CustomKernel));
95 assert!(flags.contains(WSLUserConfigurationFlags::CustomKernelCommandLine));
96
97 let back_to_config: WSLUserConfiguration = flags.into();
98 assert_eq!(back_to_config, WSLUserConfiguration(3));
99 }
100}