Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::sync::RwLock;
- use std::collections::hash_map::HashMap;
- use std::sync::Arc;
- struct User {
- token: String,
- }
- struct MyStruct {
- users: RwLock<HashMap<String, Arc<RwLock<User>>>>
- }
- impl MyStruct {
- pub fn get_mut(&self, uid: &str) -> Option<Arc<RwLock<User>>>
- {
- if let Some(u) = self.users.read().unwrap().get(uid)
- {
- Some(u.clone())
- }
- else
- {
- None
- }
- }
- pub fn update_token(&self, uid: &str, token: &str)
- {
- if let Some(u) = self.get_mut(uid)
- {
- u.write().unwrap().token = token.to_string();
- }
- }
- }
- fn main() {
- let db = MyStruct {
- users: RwLock::new(HashMap::new())
- };
- db.users.write().unwrap().insert("test".to_string(), Arc::new(RwLock::new(User {token: "test".to_string()})));
- let user = db.get_mut("test").unwrap();
- db.users.write().unwrap().clear();
- user.write().unwrap().token = "36".to_string();
- println!("{}", db.get_mut("test").unwrap().read().unwrap().token);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement