2 Star 0 Fork 0

mirrors_android_source/bindgen

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
deps.rs 1.76 KB
一键复制 编辑 原始数据 按行查看 历史
Andrew Walbran 提交于 2023-11-21 03:10 +08:00 . Upgrade bindgen to 0.69.1
/// Generating build depfiles from parsed bindings.
use std::{collections::BTreeSet, path::PathBuf};
#[derive(Clone, Debug)]
pub(crate) struct DepfileSpec {
pub output_module: String,
pub depfile_path: PathBuf,
}
impl DepfileSpec {
pub fn write(&self, deps: &BTreeSet<Box<str>>) -> std::io::Result<()> {
std::fs::write(&self.depfile_path, self.to_string(deps))
}
fn to_string(&self, deps: &BTreeSet<Box<str>>) -> String {
// Transforms a string by escaping spaces and backslashes.
let escape = |s: &str| s.replace('\\', "\\\\").replace(' ', "\\ ");
let mut buf = format!("{}:", escape(&self.output_module));
for file in deps {
buf = format!("{} {}", buf, escape(file));
}
buf
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn escaping_depfile() {
let spec = DepfileSpec {
output_module: "Mod Name".to_owned(),
depfile_path: PathBuf::new(),
};
let deps: BTreeSet<_> = vec![
r"/absolute/path".into(),
r"C:\win\absolute\path".into(),
r"../relative/path".into(),
r"..\win\relative\path".into(),
r"../path/with spaces/in/it".into(),
r"..\win\path\with spaces\in\it".into(),
r"path\with/mixed\separators".into(),
]
.into_iter()
.collect();
assert_eq!(
spec.to_string(&deps),
"Mod\\ Name: \
../path/with\\ spaces/in/it \
../relative/path \
..\\\\win\\\\path\\\\with\\ spaces\\\\in\\\\it \
..\\\\win\\\\relative\\\\path \
/absolute/path \
C:\\\\win\\\\absolute\\\\path \
path\\\\with/mixed\\\\separators"
);
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/mirrors_android_source/bindgen.git
git@gitee.com:mirrors_android_source/bindgen.git
mirrors_android_source
bindgen
bindgen
main

搜索帮助