better_path/
join.rs

1use crate::{flavours::*, Join, Path, PathBuf, PathFlavour};
2
3impl Join<Absolute> for Path<Absolute> {
4    type ResultFlavour = Absolute;
5}
6
7impl Join<Relative> for Path<Absolute> {
8    type ResultFlavour = Absolute;
9}
10
11impl Join<Unknown> for Path<Absolute> {
12    type ResultFlavour = Absolute;
13}
14
15impl Join<Absolute> for Path<Relative> {
16    type ResultFlavour = Absolute;
17}
18
19impl Join<Relative> for Path<Relative> {
20    type ResultFlavour = Relative;
21}
22
23impl Join<Unknown> for Path<Relative> {
24    type ResultFlavour = Unknown;
25}
26
27impl Join<Absolute> for Path<Unknown> {
28    type ResultFlavour = Absolute;
29}
30
31impl Join<Relative> for Path<Unknown> {
32    type ResultFlavour = Unknown;
33}
34
35impl Join<Unknown> for Path<Unknown> {
36    type ResultFlavour = Unknown;
37}
38
39impl<BF: PathFlavour> Path<BF> {
40    pub fn join<OF: PathFlavour>(
41        &self,
42        other: &Path<OF>,
43    ) -> PathBuf<<Self as Join<OF>>::ResultFlavour>
44    where
45        Path<BF>: Join<OF>,
46    {
47        self.join_internal(other)
48    }
49}