Update pathdiff to 0.2.3

Test: m
Change-Id: Ifd7a07c9760d744285c217bb282b09308d15dd1b
diff --git a/crates/pathdiff/.android-checksum.json b/crates/pathdiff/.android-checksum.json
index 6d15f7b..380b038 100644
--- a/crates/pathdiff/.android-checksum.json
+++ b/crates/pathdiff/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"b43304228cb81dd23793aa9c70d47bbac3a90753be877ac406dad5ff6d54d321","Android.bp":"8e9f68a0fdb1ccde090d8deafa960c4da7ff542fb227d3e1d380cd811032b44a","Cargo.toml":"b3f78219896bd14dc0195cc7f93aded875648468343eda528bbd607ce539fa32","LICENSE":"ef00093c3850b9bce90c03998704f3fd5bf08133e07c4f5f40ac0b4b9d663212","LICENSE-APACHE":"ef00093c3850b9bce90c03998704f3fd5bf08133e07c4f5f40ac0b4b9d663212","LICENSE-MIT":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","METADATA":"5737795e876fa7c08642bb736c5656cb24ed7670f28d34bd61edfb4b552e9ed6","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"46a3de12a464198fb4e0e31013517abb7a8d76515177ef7ec661e08d06be346f","src/lib.rs":"4e078abec5ca4074106361d16992872f97723f3abe08a5eb6704ff6476da2dc0"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"bd122efa417eefa3d8059c0f844a7a9045895127c51693d5443088164a9a2b3d","Android.bp":"77605033c980035fd60c75f0ee655b3a53673964c48b84e920bab7784c4b6f81","Cargo.toml":"56891ec57fd38664164416765af817cd422635df05a1980b76b98b9b56790bb2","LICENSE":"ef00093c3850b9bce90c03998704f3fd5bf08133e07c4f5f40ac0b4b9d663212","LICENSE-APACHE":"ef00093c3850b9bce90c03998704f3fd5bf08133e07c4f5f40ac0b4b9d663212","LICENSE-MIT":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","METADATA":"753a7659d5f1d7ef76ce3f31a1b36077ccdb63ccc3b7db0d8f23f356672ca86f","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"46a3de12a464198fb4e0e31013517abb7a8d76515177ef7ec661e08d06be346f","src/lib.rs":"c9d4eb8c2250597b10252eeaf5ac1b9c87ce0e4bc4da43a7390ad544b567c065"}}
\ No newline at end of file
diff --git a/crates/pathdiff/.cargo-checksum.json b/crates/pathdiff/.cargo-checksum.json
index 3b9cf94..f51dd97 100644
--- a/crates/pathdiff/.cargo-checksum.json
+++ b/crates/pathdiff/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"faa72c2540b42ee2f069c9307597415f32855a160aae54992171c1a4af3e97bc","LICENSE-APACHE":"dd7818e575815db1fc6ba5ae894cd1674dfbff78562407b1f9f44da0fb857fe4","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","src/lib.rs":"e1dfb7552c32e1ddd3affd99185dee01391564ee9ea795a805712de87485d877"},"package":"8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"}
\ No newline at end of file
+{"files":{"Cargo.toml":"ad2ad198407c22fba987850f596f4d82200cce67daaea0f9a81ca288b0e2f70c","LICENSE-APACHE":"dd7818e575815db1fc6ba5ae894cd1674dfbff78562407b1f9f44da0fb857fe4","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","src/lib.rs":"c44b3fc6053f9a5b0bacc9097257685f6f0edb88dd098f06d4d8fa5575c2b574"},"package":"df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3"}
\ No newline at end of file
diff --git a/crates/pathdiff/Android.bp b/crates/pathdiff/Android.bp
index 6777928..0ac8b1b 100644
--- a/crates/pathdiff/Android.bp
+++ b/crates/pathdiff/Android.bp
@@ -17,7 +17,7 @@
     name: "libpathdiff",
     crate_name: "pathdiff",
     cargo_env_compat: true,
-    cargo_pkg_version: "0.2.1",
+    cargo_pkg_version: "0.2.3",
     crate_root: "src/lib.rs",
     edition: "2018",
 }
diff --git a/crates/pathdiff/Cargo.toml b/crates/pathdiff/Cargo.toml
index 0f82445..0971126 100644
--- a/crates/pathdiff/Cargo.toml
+++ b/crates/pathdiff/Cargo.toml
@@ -12,15 +12,33 @@
 [package]
 edition = "2018"
 name = "pathdiff"
-version = "0.2.1"
+version = "0.2.3"
 authors = ["Manish Goregaokar <manishsmail@gmail.com>"]
+build = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
 description = "Library for diffing paths to obtain relative paths"
 documentation = "https://docs.rs/pathdiff/"
-keywords = ["path", "relative"]
+readme = false
+keywords = [
+    "path",
+    "relative",
+]
 license = "MIT/Apache-2.0"
 repository = "https://github.com/Manishearth/pathdiff"
+
 [package.metadata.docs.rs]
 all-features = true
+
+[lib]
+name = "pathdiff"
+path = "src/lib.rs"
+
 [dependencies.camino]
 version = "1.0.5"
 optional = true
+
+[dev-dependencies.cfg-if]
+version = "1.0.0"
diff --git a/crates/pathdiff/METADATA b/crates/pathdiff/METADATA
index 818d733..c61e8be 100644
--- a/crates/pathdiff/METADATA
+++ b/crates/pathdiff/METADATA
@@ -1,17 +1,17 @@
 name: "pathdiff"
 description: "Library for diffing paths to obtain relative paths"
 third_party {
-  version: "0.2.1"
+  version: "0.2.3"
   license_type: NOTICE
   last_upgrade_date {
-    year: 2023
-    month: 6
-    day: 12
+    year: 2024
+    month: 12
+    day: 20
   }
   homepage: "https://crates.io/crates/pathdiff"
   identifier {
     type: "Archive"
-    value: "https://static.crates.io/crates/pathdiff/pathdiff-0.2.1.crate"
-    version: "0.2.1"
+    value: "https://static.crates.io/crates/pathdiff/pathdiff-0.2.3.crate"
+    version: "0.2.3"
   }
 }
diff --git a/crates/pathdiff/src/lib.rs b/crates/pathdiff/src/lib.rs
index 3860c2d..34233b3 100644
--- a/crates/pathdiff/src/lib.rs
+++ b/crates/pathdiff/src/lib.rs
@@ -11,6 +11,8 @@
 // Adapted from rustc's path_relative_from
 // https://github.com/rust-lang/rust/blob/e1d0de82cc40b666b88d4a6d2c9dcbc81d7ed27f/src/librustc_back/rpath.rs#L116-L158
 
+#![cfg_attr(docsrs, feature(doc_cfg))]
+
 use std::path::*;
 
 /// Construct a relative path from a provided base directory path to the provided path.
@@ -19,17 +21,24 @@
 /// use pathdiff::diff_paths;
 /// use std::path::*;
 ///
-/// let baz = "/foo/bar/baz";
-/// let bar = "/foo/bar";
-/// let quux = "/foo/bar/quux";
-/// assert_eq!(diff_paths(bar, baz), Some("../".into()));
-/// assert_eq!(diff_paths(baz, bar), Some("baz".into()));
-/// assert_eq!(diff_paths(quux, baz), Some("../quux".into()));
-/// assert_eq!(diff_paths(baz, quux), Some("../baz".into()));
-/// assert_eq!(diff_paths(bar, quux), Some("../".into()));
+/// assert_eq!(diff_paths("/foo/bar",      "/foo/bar/baz"),  Some("../".into()));
+/// assert_eq!(diff_paths("/foo/bar/baz",  "/foo/bar"),      Some("baz".into()));
+/// assert_eq!(diff_paths("/foo/bar/quux", "/foo/bar/baz"),  Some("../quux".into()));
+/// assert_eq!(diff_paths("/foo/bar/baz",  "/foo/bar/quux"), Some("../baz".into()));
+/// assert_eq!(diff_paths("/foo/bar",      "/foo/bar/quux"), Some("../".into()));
 ///
-/// assert_eq!(diff_paths(&baz, &bar.to_string()), Some("baz".into()));
-/// assert_eq!(diff_paths(Path::new(baz), Path::new(bar).to_path_buf()), Some("baz".into()));
+/// assert_eq!(diff_paths("/foo/bar",      "baz"),           Some("/foo/bar".into()));
+/// assert_eq!(diff_paths("/foo/bar",      "/baz"),          Some("../foo/bar".into()));
+/// assert_eq!(diff_paths("foo",           "bar"),           Some("../foo".into()));
+///
+/// assert_eq!(
+///     diff_paths(&"/foo/bar/baz", "/foo/bar".to_string()),
+///     Some("baz".into())
+/// );
+/// assert_eq!(
+///     diff_paths(Path::new("/foo/bar/baz"), Path::new("/foo/bar").to_path_buf()),
+///     Some("baz".into())
+/// );
 /// ```
 pub fn diff_paths<P, B>(path: P, base: B) -> Option<PathBuf>
 where
@@ -82,22 +91,31 @@
 
     /// Construct a relative UTF-8 path from a provided base directory path to the provided path.
     ///
+    /// Requires the `camino` feature.
+    ///
     /// ```rust
     /// # extern crate camino;
     /// use camino::*;
     /// use pathdiff::diff_utf8_paths;
     ///
-    /// let baz = "/foo/bar/baz";
-    /// let bar = "/foo/bar";
-    /// let quux = "/foo/bar/quux";
-    /// assert_eq!(diff_utf8_paths(bar, baz), Some("../".into()));
-    /// assert_eq!(diff_utf8_paths(baz, bar), Some("baz".into()));
-    /// assert_eq!(diff_utf8_paths(quux, baz), Some("../quux".into()));
-    /// assert_eq!(diff_utf8_paths(baz, quux), Some("../baz".into()));
-    /// assert_eq!(diff_utf8_paths(bar, quux), Some("../".into()));
+    /// assert_eq!(diff_utf8_paths("/foo/bar",      "/foo/bar/baz"),  Some("../".into()));
+    /// assert_eq!(diff_utf8_paths("/foo/bar/baz",  "/foo/bar"),      Some("baz".into()));
+    /// assert_eq!(diff_utf8_paths("/foo/bar/quux", "/foo/bar/baz"),  Some("../quux".into()));
+    /// assert_eq!(diff_utf8_paths("/foo/bar/baz",  "/foo/bar/quux"), Some("../baz".into()));
+    /// assert_eq!(diff_utf8_paths("/foo/bar",      "/foo/bar/quux"), Some("../".into()));
     ///
-    /// assert_eq!(diff_utf8_paths(&baz, &bar.to_string()), Some("baz".into()));
-    /// assert_eq!(diff_utf8_paths(Utf8Path::new(baz), Utf8Path::new(bar).to_path_buf()), Some("baz".into()));
+    /// assert_eq!(diff_utf8_paths("/foo/bar",      "baz"),           Some("/foo/bar".into()));
+    /// assert_eq!(diff_utf8_paths("/foo/bar",      "/baz"),          Some("../foo/bar".into()));
+    /// assert_eq!(diff_utf8_paths("foo",           "bar"),           Some("../foo".into()));
+    ///
+    /// assert_eq!(
+    ///     diff_utf8_paths(&"/foo/bar/baz", "/foo/bar".to_string()),
+    ///     Some("baz".into())
+    /// );
+    /// assert_eq!(
+    ///     diff_utf8_paths(Utf8Path::new("/foo/bar/baz"), Utf8Path::new("/foo/bar").to_path_buf()),
+    ///     Some("baz".into())
+    /// );
     /// ```
     #[cfg_attr(docsrs, doc(cfg(feature = "camino")))]
     pub fn diff_utf8_paths<P, B>(path: P, base: B) -> Option<Utf8PathBuf>
@@ -152,12 +170,24 @@
 #[cfg(test)]
 mod tests {
     use super::*;
+    use cfg_if::cfg_if;
 
     #[test]
     fn test_absolute() {
-        assert_diff_paths("/foo", "/bar", Some("../foo"));
-        assert_diff_paths("/foo", "bar", Some("/foo"));
-        assert_diff_paths("foo", "/bar", None);
+        fn abs(path: &str) -> String {
+            // Absolute paths look different on Windows vs Unix.
+            cfg_if! {
+                if #[cfg(windows)] {
+                    format!("C:\\{}", path)
+                } else {
+                    format!("/{}", path)
+                }
+            }
+        }
+
+        assert_diff_paths(&abs("foo"), &abs("bar"), Some("../foo"));
+        assert_diff_paths(&abs("foo"), "bar", Some(&abs("foo")));
+        assert_diff_paths("foo", &abs("bar"), None);
         assert_diff_paths("foo", "bar", Some("../foo"));
     }
 
diff --git a/pseudo_crate/Cargo.lock b/pseudo_crate/Cargo.lock
index 39eaecd..1680f2c 100644
--- a/pseudo_crate/Cargo.lock
+++ b/pseudo_crate/Cargo.lock
@@ -3752,9 +3752,9 @@
 
 [[package]]
 name = "pathdiff"
-version = "0.2.1"
+version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
+checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3"
 
 [[package]]
 name = "pathfinder_geometry"
diff --git a/pseudo_crate/Cargo.toml b/pseudo_crate/Cargo.toml
index 419e9da..b95a230 100644
--- a/pseudo_crate/Cargo.toml
+++ b/pseudo_crate/Cargo.toml
@@ -229,7 +229,7 @@
 parking_lot = "=0.12.3"
 parking_lot_core = "=0.9.9"
 paste = "=1.0.15"
-pathdiff = "=0.2.1"
+pathdiff = "=0.2.3"
 pdl-compiler = "=0.3.1"
 pdl-runtime = "=0.3.2"
 percent-encoding = "=2.3.1"