socket server with rust

This commit is contained in:
2025-03-06 00:33:08 +01:00
parent 553db4c8a6
commit 6b406c24d3
16 changed files with 2332 additions and 1476 deletions
+29
View File
@@ -0,0 +1,29 @@
use std::{collections::HashMap, str::FromStr};
pub trait ParamMap {
fn parse_param<T: FromStr>(&self, param: &str) -> Result<T, String>;
}
impl ParamMap for HashMap<String, String> {
fn parse_param<T: FromStr>(&self, param: &str) -> Result<T, String> {
match self.get(param) {
Some(value) => T::from_str(value).map_err(|_| format!("Invalid parameter: {}", param)),
None => Err(format!("Parameter not found: {}", param)),
}
}
}
pub fn parse(s: &str) -> Result<(String, HashMap<String, String>), String> {
let mut parts = s.split("@");
let method = parts.next().unwrap().trim().to_lowercase();
let params = parts
.map(|p| {
let parts = p.split("=").collect::<Vec<&str>>();
(parts[0].trim().to_string(), parts[1].trim().to_string())
})
.collect::<HashMap<String, String>>();
Ok((method, params))
}