1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
use serde::{Deserialize, Serialize}; use std::net::TcpStream; pub type Callback = fn(Metadata); #[derive(Serialize, Deserialize, Debug)] pub struct Metadata { pub name: String, pub extension: String, pub name_extension: String, pub size: u32, pub hash: String, } impl Clone for Metadata { fn clone(&self) -> Self { Metadata { name: self.name.clone(), extension: self.extension.clone(), name_extension: self.name_extension.clone(), size: self.size.clone(), hash: self.hash.clone(), } } } pub trait FileHandler { fn handle_metadata(meta: &mut Vec<Metadata>); fn handle_file(meta: Metadata, file: TcpStream); }