1- use std:: fs;
2- use std:: path:: Path ;
3-
4- use std:: error:: Error ;
5-
6- #[ derive( Debug , serde:: Deserialize , serde:: Serialize , Clone ) ]
7- pub enum Permission {
8-
9- } // biewanglejia
10-
11- #[ derive( Debug , serde:: Deserialize , serde:: Serialize , Clone ) ]
12- pub struct User {
13- pub id : u32 ,
14- pub username : String ,
15- pub password : String ,
16- pub permission : Permission ,
17- }
18-
19- impl User {
20- fn get_users ( ) -> Result < Vec < User > , & str > {
21- let path = Path :: new ( "users.json" ) ;
22-
23- if !path. exists ( ) {
24- fs:: write ( path, "[]" ) ?;
25- return Ok ( Vec :: new ( ) ) ; // 这里涵盖没有就创建
26- }
27- let data = fs:: read_to_string ( path) ?;
28-
29- let users: Vec < User > = serde_json:: from_str ( & data) ?;
30-
31- Ok ( users)
32- }
33- fn remove ( id : u32 ) -> Result < ( ) , & str > {
34- let mut users = User :: get_users ( ) ?;
35- let initial_len = users. len ( ) ;
36- users. retain ( |u| u. id != id) ;
37- if users. len ( ) < initial_len { Ok ( ( ) ) }
38- Err ( "Unknown user." )
39-
40- }
41- fn new ( username : String , password : String , permission : Permission ) -> Result < ( ) , & str > {
42- let mut users = User :: get_users ( ) ?;
43- if users. iter ( ) . any ( |u| u. username == username) {
44- return Err ( "Duplicate username." ) ;
45- } // 查重
46-
47- let new_user = User {
48- id : users. len ( ) as u32 + 1 ,
49- username,
50- password,
51- permission,
52- } ;
53-
54- users. push ( new_user) ;
55- let serialized_data = serde_json:: to_string_pretty ( & users) ?;
56- fs:: write ( "users.json" , serialized_data) ?;
57-
58- Ok ( ( ) )
59- }
60- }
1+ // use std::fs;
2+ // use std::path::Path;
3+ //
4+ // use std::error::Error;
5+ //
6+ // #[derive(Debug, serde::Deserialize, serde::Serialize, Clone)]
7+ // pub struct User {
8+ // pub id: u32,
9+ // pub username: String,
10+ // pub password: String,
11+ // pub permission: Vec<String>,
12+ // }
13+ //
14+ // impl User {
15+ // fn get_users() -> Result<Vec<User>, &str> {
16+ // let path = Path::new("users.json");
17+ //
18+ // if !path.exists() {
19+ // fs::write(path, "[]")?;
20+ // return Ok(Vec::new()); // 这里涵盖没有就创建
21+ // }
22+ // let data = fs::read_to_string(path)?;
23+ //
24+ // let users: Vec<User> = serde_json::from_str(&data)?;
25+ //
26+ // Ok(users)
27+ // }
28+ // fn remove(id: u32) -> Result<(), &str>{
29+ // let mut users = User::get_users()?;
30+ // let initial_len = users.len();
31+ // users.retain(|u| u.id != id);
32+ // if users.len() < initial_len {Ok(())}
33+ // Err("Unknown user.")
34+ //
35+ // }
36+ // fn new(username: String, password: String, permission: Permission) -> Result<(), &str> {
37+ // let mut users = User::get_users()?;
38+ // if users.iter().any(|u| u.username == username) {
39+ // return Err("Duplicate username.");
40+ // } // 查重
41+ //
42+ // let new_user = User {
43+ // id: users.len() as u32 + 1,
44+ // username,
45+ // password,
46+ // permission,
47+ // };
48+ //
49+ // users.push(new_user);
50+ // let serialized_data = serde_json::to_string_pretty(&users)?;
51+ // fs::write("users.json", serialized_data)?;
52+ //
53+ // Ok(())
54+ // }
55+ // }
0 commit comments