random_image_server/
env.rs1use std::env::VarError;
2
3pub trait EnvBackend {
4 fn var(&self, var: &str) -> Result<String, VarError>;
10
11 fn set_var(&mut self, var: &str, value: &str);
13
14 fn remove(&mut self, var: &str);
16}
17
18pub(crate) struct StdEnvBackend;
19impl EnvBackend for StdEnvBackend {
20 fn var(&self, var: &str) -> Result<String, VarError> {
21 std::env::var(var)
22 }
23
24 fn set_var(&mut self, var: &str, value: &str) {
25 unsafe { std::env::set_var(var, value) };
26 }
27
28 fn remove(&mut self, var: &str) {
29 unsafe { std::env::remove_var(var) };
30 }
31}
32
33#[derive(Default)]
34pub struct MockEnvBackend {
35 vars: std::collections::HashMap<String, String>,
36}
37
38impl EnvBackend for MockEnvBackend {
39 fn var(&self, var: &str) -> Result<String, VarError> {
40 self.vars.get(var).cloned().ok_or(VarError::NotPresent)
41 }
42
43 fn set_var(&mut self, var: &str, value: &str) {
44 self.vars.insert(var.to_string(), value.to_string());
45 }
46
47 fn remove(&mut self, var: &str) {
48 self.vars.remove(var);
49 }
50}