@@ -273,7 +273,7 @@ impl Guild {
273273 . members
274274 . iter ( )
275275 . map ( |member| self . user_permissions_in ( channel, member) )
276- . all ( Permissions :: view_channel)
276+ . all ( |perm| Permissions :: view_channel ( & perm ) )
277277 } )
278278 }
279279
@@ -320,10 +320,7 @@ impl Guild {
320320 icon : Option < ImageHash > ,
321321 }
322322
323- let body = CreateGuild {
324- name,
325- icon,
326- } ;
323+ let body = CreateGuild { name, icon } ;
327324
328325 #[ expect( deprecated) ]
329326 http. create_guild ( & body) . await
@@ -894,17 +891,17 @@ impl Guild {
894891 match overwrite. kind {
895892 PermissionOverwriteType :: Member ( user_id) => {
896893 if member_user_id == user_id {
897- member_allow_overwrites = overwrite. allow ;
898- member_deny_overwrites = overwrite. deny ;
894+ member_allow_overwrites = overwrite. allow . clone ( ) ;
895+ member_deny_overwrites = overwrite. deny . clone ( ) ;
899896 }
900897 } ,
901898 PermissionOverwriteType :: Role ( role_id) => {
902899 if role_id. get ( ) == guild_id. get ( ) {
903- everyone_allow_overwrites = overwrite. allow ;
904- everyone_deny_overwrites = overwrite. deny ;
900+ everyone_allow_overwrites = overwrite. allow . clone ( ) ;
901+ everyone_deny_overwrites = overwrite. deny . clone ( ) ;
905902 } else if member_roles. contains ( & role_id) {
906- roles_allow_overwrites. push ( overwrite. allow ) ;
907- roles_deny_overwrites. push ( overwrite. deny ) ;
903+ roles_allow_overwrites. push ( overwrite. allow . clone ( ) ) ;
904+ roles_deny_overwrites. push ( overwrite. deny . clone ( ) ) ;
908905 }
909906 } ,
910907 }
@@ -915,7 +912,7 @@ impl Guild {
915912 is_guild_owner : member_user_id == guild_owner_id,
916913 everyone_permissions : if let Some ( role) = guild_roles. get ( & RoleId :: new ( guild_id. get ( ) ) )
917914 {
918- role. permissions
915+ role. permissions . clone ( )
919916 } else {
920917 error ! ( "@everyone role missing in {}" , guild_id) ;
921918 Permissions :: empty ( )
@@ -924,7 +921,7 @@ impl Guild {
924921 . iter ( )
925922 . map ( |role_id| {
926923 if let Some ( role) = guild_roles. get ( role_id) {
927- role. permissions
924+ role. permissions . clone ( )
928925 } else {
929926 warn ! (
930927 "{} on {} has non-existent role {:?}" ,
@@ -1043,7 +1040,7 @@ fn calculate_permissions(data: CalculatePermissions) -> Permissions {
10431040 }
10441041
10451042 // 3. Overwrites that deny permissions for @everyone are applied at a channel level
1046- permissions &= ! data. everyone_deny_overwrites ;
1043+ permissions. and_not_assign ( & data. everyone_deny_overwrites ) ;
10471044 // 4. Overwrites that allow permissions for @everyone are applied at a channel level
10481045 permissions |= data. everyone_allow_overwrites ;
10491046
@@ -1052,7 +1049,7 @@ fn calculate_permissions(data: CalculatePermissions) -> Permissions {
10521049 for p in data. roles_deny_overwrites {
10531050 role_deny_permissions |= p;
10541051 }
1055- permissions &= ! role_deny_permissions;
1052+ permissions. and_not_assign ( & role_deny_permissions) ;
10561053
10571054 // 6. Overwrites that allow permissions for specific roles are applied at a channel level
10581055 let mut role_allow_permissions = Permissions :: empty ( ) ;
@@ -1062,7 +1059,7 @@ fn calculate_permissions(data: CalculatePermissions) -> Permissions {
10621059 permissions |= role_allow_permissions;
10631060
10641061 // 7. Member-specific overwrites that deny permissions are applied at a channel level
1065- permissions &= ! data. member_deny_overwrites ;
1062+ permissions. and_not_assign ( & data. member_deny_overwrites ) ;
10661063 // 8. Member-specific overwrites that allow permissions are applied at a channel level
10671064 permissions |= data. member_allow_overwrites ;
10681065
@@ -1331,10 +1328,7 @@ mod test {
13311328 fn get_guild ( ) -> Guild {
13321329 let m = get_member ( ) ;
13331330
1334- Guild {
1335- members : ExtractMap :: from_iter ( [ m] ) ,
1336- ..Default :: default ( )
1337- }
1331+ Guild { members : ExtractMap :: from_iter ( [ m] ) , ..Default :: default ( ) }
13381332 }
13391333
13401334 #[ test]
0 commit comments