spec-drift 0.2.0

Semantic coherence analysis between specification and implementation for Rust projects.
Documentation
use super::{LlmClient, LlmVerdict};

/// LLM client that always returns `None`. Used whenever the `[llm]` block is
/// disabled, `--no-llm` is set, or a real provider isn't configured. Making
/// the disabled-by-default path a first-class implementation means analyzers
/// never need a `if let Some(client) = ...` branch.
pub struct NullLlmClient;

impl LlmClient for NullLlmClient {
    fn evaluate(&self, _system_prompt: &str, _user_prompt: &str) -> Option<LlmVerdict> {
        None
    }

    fn complete(&self, _system_prompt: &str, _user_prompt: &str) -> Option<String> {
        None
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn always_returns_none() {
        assert!(NullLlmClient.evaluate("x", "y").is_none());
    }
}