44 lines
1.0 KiB
Rust
44 lines
1.0 KiB
Rust
pub enum FileType {
|
|
C,
|
|
Cpp,
|
|
Else,
|
|
}
|
|
|
|
impl FileType {
|
|
pub fn is_else(&self) -> bool {
|
|
match self {
|
|
Self::Else => {
|
|
return true;
|
|
}
|
|
_ => {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// 判断文件名是否为.c或.cpp结尾
|
|
pub fn file_is_c_or_cpp(file_name: &String) -> FileType {
|
|
let t: Vec<&u8> = file_name.as_bytes().iter().collect();
|
|
if t.len() >= 2 && *t[t.len() - 2] == b'.' && *t[t.len() - 1] == b'c' {
|
|
return FileType::C;
|
|
}
|
|
if t.len() >= 4
|
|
&& *t[t.len() - 4] == b'.'
|
|
&& *t[t.len() - 3] == b'c'
|
|
&& *t[t.len() - 2] == b'p'
|
|
&& *t[t.len() - 1] == b'p'
|
|
{
|
|
return FileType::Cpp;
|
|
}
|
|
return FileType::Else;
|
|
}
|
|
|
|
// 生成可执行程序的文件名(仅windows上有.exe结尾)
|
|
pub fn make_app_file_name(file_name: &str) -> String {
|
|
if cfg!(target_os = "windows") {
|
|
return String::from(file_name) + ".exe";
|
|
}
|
|
return String::from(file_name);
|
|
}
|