halo_space/
valuer.rs

1//! SqlValuer: minimal support for `database/sql/driver.Valuer`-like behavior.
2//!
3//! In Go, `driver.Valuer` can be invoked during interpolation to obtain the final serializable value.
4//! Rust lacks a standard trait, so we provide a crate-local one for users/tests to implement.
5
6use crate::value::SqlValue;
7
8/// Error returned by `SqlValuer`.
9#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
10#[error("builder sql valuer error: {0}")]
11pub struct ValuerError(pub String);
12
13/// Trait for computing SQL values at interpolation time.
14pub trait SqlValuer: dyn_clone::DynClone + std::fmt::Debug {
15    fn value(&self) -> Result<SqlValue, ValuerError>;
16}
17
18dyn_clone::clone_trait_object!(SqlValuer);