1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//! ログコンシューマ。元の 0.27 の `core::logs::consumer` と同一シグネチャ。
pub
pub use LoggingConsumer;
use Future;
use Pin;
use crateLogFrame;
/// ログフレームを消費するトレイト。
/// コンテナのライフサイクル全期間で各ログフレームについて呼ばれる。
///
/// 本クレートは行単位 (改行除去後の `Vec<u8>`) で配信する。
/// 本家 testcontainers-rs 0.27 のチャンク単位配信とは異なる。
///
/// # 制約
///
/// `blocking` feature 使用時、コールバック内で同期 API (`SyncRunner::start` 等) を
/// 呼び出すと共有 Runtime への再入によって deadlock する。実装側は再入を検出して
/// 即座にエラーにする (fail-fast) が、コールバック内では同期 API の呼び出しを避けること。
///
/// コールバック内で `Container::stdout` / `stderr` (同期ログリーダー) を取得して読む
/// 場合も同様に再入検出が働き、読み取り時点で `io::Error` を返す。コールバック外で
/// 取得したリーダーをコールバック内で読むケースは検出されない点に注意すること。