ydb 0.12.0

Crate contains generated low-level grpc code from YDB API protobuf, used as base for ydb crate
Documentation
use crate::grpc_wrapper::raw_errors::{RawError, RawResult};
use ydb_grpc::ydb_proto::topic::MeteringMode;

#[derive(serde::Serialize, Clone, Default, Debug)]
pub(crate) enum RawMeteringMode {
    #[default]
    Unspecified,
    ReservedCapacity,
    RequestUnits,
}

impl TryFrom<i32> for RawMeteringMode {
    type Error = RawError;

    fn try_from(value: i32) -> RawResult<Self> {
        let value = MeteringMode::try_from(value)
            .map_err(|e| RawError::ProtobufDecodeError(format!("invalid metering mode: {e}")))?;
        match value {
            MeteringMode::Unspecified => Ok(RawMeteringMode::Unspecified),
            MeteringMode::ReservedCapacity => Ok(RawMeteringMode::ReservedCapacity),
            MeteringMode::RequestUnits => Ok(RawMeteringMode::RequestUnits),
        }
    }
}

impl From<RawMeteringMode> for MeteringMode {
    fn from(v: RawMeteringMode) -> Self {
        match v {
            RawMeteringMode::Unspecified => MeteringMode::Unspecified,
            RawMeteringMode::ReservedCapacity => MeteringMode::ReservedCapacity,
            RawMeteringMode::RequestUnits => MeteringMode::RequestUnits,
        }
    }
}