///|
/// Span 嵌套阶段计时 + ConsoleReporter 示例
///
/// 演示 Span 父子嵌套计时和 ConsoleReporter 的 Span 树输出
fn main {
println("=== Span 嵌套阶段计时示例 ===")
println("")
// 创建根 Span
let root = @lib.Span::new("http-request")
let root1 = root.start()
// 子阶段 1:DNS 查询
let dns = @lib.Span::new("dns-lookup")
let dns1 = dns.start()
let mut i = 0
while i < 500 {
i = i + 1
}
let dns2 = dns1.stop()
// 子阶段 2:TCP 连接
let tcp = @lib.Span::new("tcp-connect")
let tcp1 = tcp.start()
let mut j = 0
while j < 800 {
j = j + 1
}
let tcp2 = tcp1.stop()
// 子阶段 3:TLS 握手(嵌套子 Span)
let tls = @lib.Span::new("tls-handshake")
let tls1 = tls.start()
let cert_check = @lib.Span::new("cert-verify")
let cert_check1 = cert_check.start()
let mut k = 0
while k < 300 {
k = k + 1
}
let cert_check2 = cert_check1.stop()
let tls2 = tls1.add_child(cert_check2)
let tls3 = tls2.stop()
// 组装 Span 树
let root2 = root1.add_child(dns2)
let root3 = root2.add_child(tcp2)
let root4 = root3.add_child(tls3)
let root5 = root4.stop()
// 使用 ConsoleReporter 输出 Span 树
let reporter = @lib.ConsoleReporter::new()
reporter.report_span(root5)
// 使用 JsonReporter 序列化 Span 树
let json_reporter = @lib.JsonReporter::new()
json_reporter.report_span(root5)
println("JSON output:")
println(json_reporter.output())
println("=== 示例结束 ===")
}