Skip to content
Extraits de code Groupes Projets
Vérifiée Valider 748952a0 rédigé par Kubat's avatar Kubat
Parcourir les fichiers

Get ride of unsafe code!

parent b34bca16
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
#![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,
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter