打印cfg!(profile_compiler_runs)
Resolved(None, Path {...})
表示这是一个完全解析的路径。None
表示这个路径没有前缀,也就是说它不是一个显式的类型限定路径(如<T as Trait>::function
)。Path
里的字段包含这个路径的一些信息:span
给出了源代码中这个路径的位置。res
给出了这个路径最终指向的定义,这里是Def(AssocFn, DefId(2:6571 ~ core[5bc6]::fmt::Display::fmt))
,意味着这个路径指向的是一个关联函数(即,某个类型的方法),该函数在编译器中的内部标识是DefId(2:6571 ~ core[5bc6]::fmt::Display::fmt)
。segments
是一个路径段的数组,表示这个路径的各个部分。每个PathSegment
包含一部分路径的名称(ident
),以及这个路径部分的一些额外信息,如它所对应的定义(res
),可能的类型参数(args
),等等。
这样,当你的程序在编译时,如果存在 cfg!(profile_compiler_runs)
的代码块,那么它就会被执行。这包括你提供的 `println!` 语句。
RUSTFLAGS="--cfg profile_compiler_runs" cargo run --release --bin unsafe-counter -- /root/original-lab/laertes/test-inputs/bzip2/rust/c2rust-lib.rs