From 748952a05017a17d4b0c4fd05d0508022dbc4188 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Wed, 15 Dec 2021 12:00:43 +0100 Subject: [PATCH] Get ride of unsafe code! --- src/cmd/mod.rs | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/cmd/mod.rs b/src/cmd/mod.rs index 6c44b15..1637d1c 100644 --- a/src/cmd/mod.rs +++ b/src/cmd/mod.rs @@ -1,18 +1,18 @@ +#![allow(dead_code)] + pub mod acl; pub mod package; use log::error; use std::{process::abort, string::String, sync::Arc}; -#[allow(dead_code)] #[derive(Clone)] enum CmdHandler { - Simple(Arc<dyn Fn(Vec<&str>) -> bool>), - Echo(Arc<dyn Fn(Vec<&str>) -> String>), - MultiEcho(Arc<dyn Fn(Vec<&str>) -> Vec<String>>), + Simple(Arc<dyn Fn(Vec<&str>) -> bool + Send + Sync>), + Echo(Arc<dyn Fn(Vec<&str>) -> String + Send + Sync>), + MultiEcho(Arc<dyn Fn(Vec<&str>) -> Vec<String> + Send + Sync>), } -#[allow(dead_code)] #[derive(Clone)] pub struct Cmd { name: String, @@ -20,16 +20,11 @@ pub struct Cmd { handler: CmdHandler, } -unsafe impl Sync for Cmd {} -unsafe impl Send for Cmd {} - impl Cmd { - #[allow(dead_code)] pub fn matches(&self, name: &str, args: &Vec<&str>) -> bool { (self.name == *name) && (self.argc as usize == args.len()) } - #[allow(dead_code)] pub fn exec(&self, args: Vec<&str>) -> String { if args.len() != self.argc as usize { error!("Arg count doesn't match"); @@ -46,13 +41,15 @@ impl Cmd { } } - #[allow(dead_code)] pub fn get_name(&self) -> &str { &self.name } - #[allow(dead_code)] - pub fn new_simple(name: String, argc: u32, f: Arc<dyn Fn(Vec<&str>) -> bool>) -> Cmd { + pub fn new_simple( + name: String, + argc: u32, + f: Arc<dyn Fn(Vec<&str>) -> bool + Send + Sync>, + ) -> Cmd { Cmd { name: name, argc: argc, @@ -60,8 +57,11 @@ impl Cmd { } } - #[allow(dead_code)] - pub fn new_echo(name: String, argc: u32, f: Arc<dyn Fn(Vec<&str>) -> String>) -> Cmd { + pub fn new_echo( + name: String, + argc: u32, + f: Arc<dyn Fn(Vec<&str>) -> String + Send + Sync>, + ) -> Cmd { Cmd { name: name, argc: argc, @@ -69,11 +69,10 @@ impl Cmd { } } - #[allow(dead_code)] pub fn new_multi_echo( name: String, argc: u32, - f: Arc<dyn Fn(Vec<&str>) -> Vec<String>>, + f: Arc<dyn Fn(Vec<&str>) -> Vec<String> + Send + Sync>, ) -> Cmd { Cmd { name: name, -- GitLab