From 777746bc0040f98c4c71e4b7ae7a3a6187ca343f Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Fri, 9 Jun 2023 21:34:54 +0200 Subject: [PATCH] Add from_vec() Calculates a PermissionFlags Stirng from a Vec. --- src/types/entities/role.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/types/entities/role.rs b/src/types/entities/role.rs index ba4a2fe..3cbf0ea 100644 --- a/src/types/entities/role.rs +++ b/src/types/entities/role.rs @@ -106,4 +106,30 @@ impl PermissionFlags { pub fn has_permission(&self, permission: PermissionFlags) -> bool { self.contains(permission) || self.contains(PermissionFlags::ADMINISTRATOR) } + + pub fn to_string(&self) -> String { + self.bits().to_string() + } + + /// Creates a String of Permissions from a given [`Vec`] of [`PermissionFlags`]. + /// # Example: + /// ``` + /// use chorus::types::{PermissionFlags}; + /// + /// let mut vector: Vec = Vec::new(); + /// vector.push(PermissionFlags::MUTE_MEMBERS); + /// vector.push(PermissionFlags::DEAFEN_MEMBERS); + /// + /// let permissions: String = PermissionFlags::from_vec(vector); + /// + /// println!("The permissions string is {}.", permissions); + /// assert_eq!(permissions, "12582912".to_string()); + /// ``` + pub fn from_vec(flags: Vec) -> String { + let mut permissions: PermissionFlags = Default::default(); + for flag in flags.iter() { + permissions = permissions | flag.clone(); + } + permissions.to_string() + } }