ctx_

Crates.ioctx_
lib.rsctx_
version0.1.8
created_at2025-03-04 08:31:00.576717+00
updated_at2025-03-05 12:20:06.047805+00
descriptionExtract message form headers only once for one req ( support async and sync ) / 一个请求只提取一次消息, 支持异步和同步
homepagehttps://github.com/i18n-site/hpc/tree/dev/rust/ctx_
repositoryhttps://github.com/i18n-site/hpc.git
max_upload_size
id1576914
size75,800
i18n.site (i18nsite)

documentation

README

ctx_

Use arena memory allocation bumpalo

Extract message form headers only once for one req ( support async / sync )

使用 arena 内存分配器 bumpalo

一个请求只提取一次消息, 支持异步 / 同步

use aok::{OK, Result};
use tokio::time::{Duration, sleep};
use ctx_::{Cookie, Ctx};
use http::{Method, Request};
use tracing::info;

#[static_init::constructor(0)]
extern "C" fn init() {
  loginit::init()
}

#[tokio::test]
async fn test() -> Result<()> {
  let request = Request::builder()
    .method(Method::POST)
    .uri("/my/path")
    .header("cookie", "session_id=12345; user_id=67890")
    .body(())?;

  let (request, _) = request.into_parts();

  {
    let req: Ctx = request.into();
    let req = &req;

    async {
      sleep(Duration::from_secs(2)).await;
      let cookie: &Cookie = ctx_::sync::get(req);
      info!("{}", cookie);
    }
    .await;

    async {
      sleep(Duration::from_secs(1)).await;
      let cookie: &Cookie = ctx_::sync::get(req);
      info!("{}", cookie);
    }
    .await;
  }
  info!("done");
  OK
}

About

This project is an open-source component of i18n.site ⋅ Internationalization Solution.

关于

本项目为 i18n.site ⋅ 国际化解决方案 的开源组件。

Commit count: 0

cargo fmt