pub struct SearchPaths { /* private fields */ }Expand description
The include directories a unit searches, in the order it searches them.
The lists are kept apart so that the order is a decision rather than an
accident: what the unit itself asks for wins over what the build asked for,
which wins over what the environment asked for, which wins over what is
bundled — and the platform’s own directories are not there at all until
SearchPaths::enable_system puts them there.
Implementations§
Source§impl SearchPaths
impl SearchPaths
Sourcepub fn new(options: &[PathBuf]) -> Self
pub fn new(options: &[PathBuf]) -> Self
The directories configured before preprocessing starts.
Sourcepub fn add_pragma(&mut self, dir: &str)
pub fn add_pragma(&mut self, dir: &str)
Adds a directory named by #pragma cinrs include_path.
A relative path is resolved against CARGO_MANIFEST_DIR — the package
being compiled, which the procedural macro reads from the environment
of the rustc process Cargo started — so that a c99! block means the
same thing however the build was invoked. Without that variable (a unit
test, a hand-rolled rustc) the path is left as it stands, and is then
relative to the working directory.
Sourcepub fn enable_system(&mut self, mode: System, dirs: Vec<PathBuf>)
pub fn enable_system(&mut self, mode: System, dirs: Vec<PathBuf>)
Puts the platform’s own directories on the path.
Idempotent in the mode that matters: turning the switch on twice with
the same directories changes nothing, and asking for first after
asking for the plain form moves them, which is what a unit that writes
both pragmas means.
Sourcepub fn system_mode(&self) -> System
pub fn system_mode(&self) -> System
Whether — and where — the platform’s own directories are searched.
Sourcepub fn entries(&self, from_system: bool) -> Vec<Entry>
pub fn entries(&self, from_system: bool) -> Vec<Entry>
Every place a header is looked for, in the order it is looked for, after the including file’s own directory.
This is the list #include_next walks: a header found under
entry i continues from entry i + 1.
from_system says the directive was written in one of the platform’s
own headers, which puts the platform’s directories ahead of the bundled
ones however the switch was set; see Origin::SystemDir.