fn build_enforcer(source: EnforcerSource) -> Result<Enforcer, String>Expand description
Compiles the enforcer on a dedicated thread with its own Tokio runtime.
See the module docs for why this indirection exists. Any construction
failure (bad model config, missing/invalid policy file, malformed CSV) is
surfaced as an Err(String) at config load.