xref: /DragonOS/kernel/src/filesystem/vfs/utils.rs (revision 004e86ff19727df303c23b42c7a271b9214c6898)
1*004e86ffSlogin /// @brief 切分路径字符串,返回最左侧那一级的目录名和剩余的部分。
2*004e86ffSlogin ///
3*004e86ffSlogin /// 举例:对于 /123/456/789/   本函数返回的第一个值为123, 第二个值为456/789
4*004e86ffSlogin pub fn split_path(path: &str) -> (&str, Option<&str>) {
5*004e86ffSlogin     let mut path_split: core::str::SplitN<&str> = path.trim_matches('/').splitn(2, "/");
6*004e86ffSlogin     let comp = path_split.next().unwrap_or("");
7*004e86ffSlogin     let rest_opt = path_split.next();
8*004e86ffSlogin 
9*004e86ffSlogin     return (comp, rest_opt);
10*004e86ffSlogin }
11*004e86ffSlogin 
12*004e86ffSlogin /// @brief 切分路径字符串,返回最右侧那一级的目录名和剩余的部分。
13*004e86ffSlogin ///
14*004e86ffSlogin /// 举例:对于 /123/456/789/   本函数返回的第一个值为789, 第二个值为123/456
15*004e86ffSlogin pub fn rsplit_path(path: &str) -> (&str, Option<&str>) {
16*004e86ffSlogin     let mut path_split: core::str::RSplitN<&str> = path.trim_matches('/').rsplitn(2, "/");
17*004e86ffSlogin     let comp = path_split.next().unwrap_or("");
18*004e86ffSlogin     let rest_opt = path_split.next();
19*004e86ffSlogin 
20*004e86ffSlogin     return (comp, rest_opt);
21*004e86ffSlogin }
22