rpc_adapter 0.1.2

English: RPC adapter for unified request handling / 中文: 统一请求处理的RPC适配器
Documentation
use http::Extensions;
use volo_grpc::metadata::MetadataMap;

use crate::Map;

impl Map for &MetadataMap {
  fn get(&self, key: impl AsRef<str>) -> Option<&str> {
    if let Some(v) = MetadataMap::get(&self, key.as_ref())
      && let Ok(v) = v.to_str()
    {
      return Some(v);
    }
    None
  }
}

impl<T> crate::Req for volo_grpc::Request<T> {
  fn headers(&self) -> impl Map {
    self.metadata()
  }

  fn extensions(&self) -> &Extensions {
    self.extensions()
  }

  fn extensions_mut(&mut self) -> &mut Extensions {
    self.extensions_mut()
  }
}