chiark / gitweb /
wip errors from introducing accounts
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 1 Nov 2020 22:11:02 +0000 (22:11 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 1 Nov 2020 22:11:02 +0000 (22:11 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/accounts.rs
src/global.rs

index 24cbc09d7f6faaf0165edb965141e645803320c4..62454baca5271033ea70aecd0483161dc70534f7 100644 (file)
@@ -440,7 +440,7 @@ pub mod loaded_acl {
     }
   }
 
-  fn unpack<P:Perm>(packed: PermSet<P>) -> HashSet<P> {
+  fn unpack<P:Perm>(packed: &PermSet<P>) -> HashSet<P> {
     let mut s = HashSet::new();
     for n in 0.. {
       let v = match FromPrimitive::from_u64(n) { Some(v) => v, None => break };
@@ -451,6 +451,12 @@ pub mod loaded_acl {
 
   impl<P:Perm> From<Acl<P>> for LoadedAcl<P> {
     fn from(acl: Acl<P>) -> LoadedAcl<P> {
+      (&acl).into()
+    }
+  }
+
+  impl<P:Perm> From<&Acl<P>> for LoadedAcl<P> {
+    fn from(acl: &Acl<P>) -> LoadedAcl<P> {
       let ents = acl.ents.into_iter().filter_map(
         |AclEntry { account_glob, allow, deny }|
         {
@@ -474,6 +480,12 @@ pub mod loaded_acl {
 
   impl<P:Perm> From<LoadedAcl<P>> for Acl<P> {
     fn from(acl: LoadedAcl<P>) -> Acl<P> {
+      (&acl).into()
+    }
+  }
+
+  impl<P:Perm> From<&LoadedAcl<P>> for Acl<P> {
+    fn from(acl: &LoadedAcl<P>) -> Acl<P> {
       let LoadedAcl(ents) = acl;
       Acl { ents: ents.into_iter().map(
         |LoadedAclEntry { pat, allow, deny, .. }|
index 540b98f29f05c862edc60a5426f8dfd91ed56980..87bc5ae99b33b2535d2a0a40df98f9bfc646f29d 100644 (file)
@@ -844,7 +844,7 @@ impl InstanceGuard<'_> {
         |(player, PlayerRecord { ipl, .. })|
         (player, ipl.clone())
       ).collect();
-      let acl = s.c.g.acl.into();
+      let acl = (&s.c.g.acl).into();
       let isa = InstanceSaveAccesses {
         ipieces, tokens_players, aplayers, acl
       };
@@ -943,7 +943,7 @@ impl InstanceGuard<'_> {
 
     let g = Instance {
       gs, iplayers,
-      acl: acl.into(),
+      acl: (&acl).into(),
       ipieces: PiecesLoaded(ipieces),
       name: name.clone(),
       clients : Default::default(),