axum ファイルをストリームで返す
axum
でファイルの内容をストリームで返す方法
axumの
Body::from_stream
に Streamを渡す
Streamは
S: TryStream + Send + 'static,
らしい
TryStream
castaneai.icon
が使おうとしたのが
std::fs::File
だったのでそれを
tokio::fs::File
に変換しないと
tokio::io::AsyncRead
traitを満たせなくて、ファイルからファイルを作ってストリームを作って……という冗長なコードになった
code:_.rs
let file = tokio::fs::File::from(out.reopen()?);
let stream = ReaderStream::new(file);
Ok((
(header::CONTENT_TYPE, mime_type)
, Body::from_stream(stream)))