diff --git a/src/symbols/acme/user.rs b/src/symbols/acme/user.rs index 773c642..fed9350 100644 --- a/src/symbols/acme/user.rs +++ b/src/symbols/acme/user.rs @@ -56,37 +56,37 @@ pub fn new<'a, S: Into>, C: CommandRunner, P: 'a + Deref Box { +) -> impl Symbol + 'a { // impl trait let user_name_cow = user_name.into(); let account_key_file: PathBuf = ["/home", user_name_cow.borrow(), "account.key"] .iter() .collect(); - Box::new(List::new(vec![ - Box::new(AcmeAccountKey::new( + List::from(( + AcmeAccountKey::new( account_key_file.clone().into(), command_runner, - )), - Box::new(Owner::new( + ), + Owner::new( account_key_file.to_string_lossy().into_owned(), user_name_cow.clone(), command_runner, - )), - Box::new(Dir::new("/home/acme/challenges")), - Box::new(Owner::new( + ), + Dir::new("/home/acme/challenges"), + Owner::new( "/home/acme/challenges", user_name_cow.clone(), command_runner, - )), - Box::new(Dir::new("/etc/ssl/local_certs")), - Box::new(Owner::new( + ), + Dir::new("/etc/ssl/local_certs"), + Owner::new( "/etc/ssl/local_certs", user_name_cow, command_runner, - )), - Box::new(File::new( + ), + File::new( "/home/acme/lets_encrypt_x3_cross_signed.pem", cert, - )), - ])) + ), + )) } diff --git a/src/symbols/list.rs b/src/symbols/list.rs index dd827cf..4a2c019 100644 --- a/src/symbols/list.rs +++ b/src/symbols/list.rs @@ -95,6 +95,70 @@ impl<'a, A: 'a + Symbol, B: 'a + Symbol, C: 'a + Symbol, D: 'a + Symbol> From<(A } } +impl<'a, A: 'a + Symbol, B: 'a + Symbol, C: 'a + Symbol, D: 'a + Symbol, E: 'a + Symbol> From<(A, B, C, D, E)> + for List<'a> +{ + fn from((a, b, c, d, e): (A, B, C, D, E)) -> Self { + Self::new(vec![Box::new(a), Box::new(b), Box::new(c), Box::new(d), Box::new(e)]) + } +} + +impl<'a, A: 'a + Symbol, B: 'a + Symbol, C: 'a + Symbol, D: 'a + Symbol, E: 'a + Symbol, F: 'a + Symbol> From<(A, B, C, D, E, F)> + for List<'a> +{ + fn from((a, b, c, d, e, f): (A, B, C, D, E, F)) -> Self { + Self::new(vec![Box::new(a), Box::new(b), Box::new(c), Box::new(d), Box::new(e), Box::new(f)]) + } +} + +impl<'a, A: 'a + Symbol, B: 'a + Symbol, C: 'a + Symbol, D: 'a + Symbol, E: 'a + Symbol, F: 'a + Symbol, G: 'a + Symbol> From<(A, B, C, D, E, F, G)> + for List<'a> +{ + fn from((a, b, c, d, e, f, g): (A, B, C, D, E, F, G)) -> Self { + Self::new(vec![Box::new(a), Box::new(b), Box::new(c), Box::new(d), Box::new(e), Box::new(f), Box::new(g)]) + } +} + +impl<'a, A: 'a + Symbol, B: 'a + Symbol, C: 'a + Symbol, D: 'a + Symbol, E: 'a + Symbol, F: 'a + Symbol, G: 'a + Symbol, H: 'a + Symbol> From<(A, B, C, D, E, F, G, H)> + for List<'a> +{ + fn from((a, b, c, d, e, f, g, h): (A, B, C, D, E, F, G, H)) -> Self { + Self::new(vec![Box::new(a), Box::new(b), Box::new(c), Box::new(d), Box::new(e), Box::new(f), Box::new(g), Box::new(h)]) + } +} + +impl<'a, A: 'a + Symbol, B: 'a + Symbol, C: 'a + Symbol, D: 'a + Symbol, E: 'a + Symbol, F: 'a + Symbol, G: 'a + Symbol, H: 'a + Symbol, I: 'a + Symbol, J: 'a + Symbol, K: 'a + Symbol> From<(A, B, C, D, E, F, G, H, I, J, K)> + for List<'a> +{ + fn from((a, b, c, d, e, f, g, h, i, j, k): (A, B, C, D, E, F, G, H, I, J, K)) -> Self { + Self::new(vec![Box::new(a), Box::new(b), Box::new(c), Box::new(d), Box::new(e), Box::new(f), Box::new(g), Box::new(h), Box::new(i), Box::new(j), Box::new(k)]) + } +} + +impl<'a, A: 'a + Symbol, B: 'a + Symbol, C: 'a + Symbol, D: 'a + Symbol, E: 'a + Symbol, F: 'a + Symbol, G: 'a + Symbol, H: 'a + Symbol, I: 'a + Symbol, J: 'a + Symbol, K: 'a + Symbol, L: 'a + Symbol> From<(A, B, C, D, E, F, G, H, I, J, K, L)> + for List<'a> +{ + fn from((a, b, c, d, e, f, g, h, i, j, k, l): (A, B, C, D, E, F, G, H, I, J, K, L)) -> Self { + Self::new(vec![Box::new(a), Box::new(b), Box::new(c), Box::new(d), Box::new(e), Box::new(f), Box::new(g), Box::new(h), Box::new(i), Box::new(j), Box::new(k), Box::new(l)]) + } +} + +impl<'a, A: 'a + Symbol, B: 'a + Symbol, C: 'a + Symbol, D: 'a + Symbol, E: 'a + Symbol, F: 'a + Symbol, G: 'a + Symbol, H: 'a + Symbol, I: 'a + Symbol, J: 'a + Symbol, K: 'a + Symbol, L: 'a + Symbol, M: 'a + Symbol> From<(A, B, C, D, E, F, G, H, I, J, K, L, M)> + for List<'a> +{ + fn from((a, b, c, d, e, f, g, h, i, j, k, l, m): (A, B, C, D, E, F, G, H, I, J, K, L, M)) -> Self { + Self::new(vec![Box::new(a), Box::new(b), Box::new(c), Box::new(d), Box::new(e), Box::new(f), Box::new(g), Box::new(h), Box::new(i), Box::new(j), Box::new(k), Box::new(l), Box::new(m)]) + } +} + +impl<'a, A: 'a + Symbol, B: 'a + Symbol, C: 'a + Symbol, D: 'a + Symbol, E: 'a + Symbol, F: 'a + Symbol, G: 'a + Symbol, H: 'a + Symbol, I: 'a + Symbol, J: 'a + Symbol, K: 'a + Symbol, L: 'a + Symbol, M: 'a + Symbol, N: 'a + Symbol> From<(A, B, C, D, E, F, G, H, I, J, K, L, M, N)> + for List<'a> +{ + fn from((a, b, c, d, e, f, g, h, i, j, k, l, m, n): (A, B, C, D, E, F, G, H, I, J, K, L, M, N)) -> Self { + Self::new(vec![Box::new(a), Box::new(b), Box::new(c), Box::new(d), Box::new(e), Box::new(f), Box::new(g), Box::new(h), Box::new(i), Box::new(j), Box::new(k), Box::new(l), Box::new(m), Box::new(n)]) + } +} + struct SymbolListAction<'a> { runner: &'a dyn SymbolRunner, symbols: &'a [Box],