Утечка памяти в функции


#1

Ребят подскажите пожалуйста, есть функция которая захватывает массив users из другого контроллера, из за чего тот не выгружается, как можно это решить? надо как то обыграть var users = users но как не понимаю.

func usersObserve(users: [MUser], completion: @escaping (Result<[MUser], Error>) -> Void) -> ListenerRegistration? {
    var users = users
    let usersListener = usersRef.addSnapshotListener { querySnapshot, error in
        guard let snapshot = querySnapshot else {
            completion(.failure(error!))
            return
        }
        snapshot.documentChanges.forEach { diff in
            guard let muser = MUser(document: diff.document) else { return }
            switch diff.type {
                
            case .added:
                guard !users.contains(muser) else { return }
                guard muser.id != self.currentUserId else { return }
                users.append(muser)
            case .modified:
                guard let index = users.firstIndex(of: muser) else { return }
                users[index] = muser
            case .removed:
                guard let index = users.firstIndex(of: muser) else { return }
                users.remove(at: index)
            }
        }
        completion(.success(users))
    }
    return usersListener
}

#2

inout ? _____________