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}