diff --git a/crates/anyhow/.android-checksum.json b/crates/anyhow/.android-checksum.json
index 6806122..17f0459 100644
--- a/crates/anyhow/.android-checksum.json
+++ b/crates/anyhow/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"eb6ac638329e1e22dff1a85c94cc3466af98a3e057d9806dcf354570cac200cd","Android.bp":"ee8a7d1eb0ed6f0e9f6170590dd0ffb1fbfab561db53e96e76105a5043c17554","Cargo.toml":"a239b1153fe69af2dac6e8cb8858711a84ca06b7a39fb2a08eb5745225a4d314","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-MIT":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","METADATA":"e28c08e692d8edcf4cf416b41f8679d3acdd4b8cb3d7ac93bd1d07335841fb16","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","NOTICE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","README.md":"8a77d709791a6f1cb645d2526bc5213c9de5c9d17c631844dd3a23958be1ad73","TEST_MAPPING":"29c108f688eb487511b09dad52fd194a6c615116e8b6cbd1e086bfd0446fbe49","build.rs":"e0dac83067c845e156836f0024fca74692325f6ebbae30f702b53e4e530e4051","build/probe.rs":"d6fedff361865fdfac422b38c7e377cd9044b4ee6cfddc971f69647568bdb727","cargo_embargo.json":"8de1ddbaead22702faddd35234241c9bac36a1732a4d91d693ac3c9f1ef9de27","patches/0001-Support-RUST_BACKTRACE-settings-in-test_fmt.patch":"c1f3920eccde9102ec4eb781e16af4a8d44332d9340afa5890463fce7fe6e767","rust-toolchain.toml":"25bc44c2a4cb625e0f16003c73ac0db2fc79a3b79a5b0e6d4b6175c6dbe5af69","src/backtrace.rs":"d9d4415db753717978ccb20df5fccca2e7bfac14ae5529cb384b82732c4db804","src/chain.rs":"c1af745a06948c326758c185c50d5f46e54b5628098091d1ca53b3569d29dc66","src/context.rs":"0c9b6ee3126f2af8d34e7e749d0a70aaa0fa33c6b462b14a7c7fa2e9c9792336","src/ensure.rs":"db4aa1411171ce2cd03518d583b302bbbf4e6f7f456bac15d1d867bd6f8808f6","src/error.rs":"9c5d4ee6a6473c7dcbbeb0d01c41cc56e36e01dd4af7e453135d669a82d5bce4","src/fmt.rs":"805c7503e09f60bf78932b36b3e3ba56881597358cafe183f99878a256bd1bf1","src/kind.rs":"d466f5fe9d5ddc1ec010ee3a8e8bfdacd241ceffc3672a207a6a82a0ff8ec9f0","src/lib.rs":"da49746563a57801f83b5b5e530dce47a018aa84daa8768cb79656011213aa99","src/macros.rs":"e3e5aaa02b7c76ef9282dcff6763c0df8418c032a7e11a410be33390c033fb35","src/ptr.rs":"fb5381f35e251f864d19bbf5c12267500e3f1dba4b2a3b778c43a28f9d37ddf1","src/wrapper.rs":"ea6e738a1be71dc45be466df6b5fdac2967c47e487f0ae0579d5274a827094d4","tests/common/mod.rs":"d94b75b7944203361428a1c836608fb591b794756dfc05e64f82d6ac4462ce79","tests/compiletest.rs":"8f2cbc080ae802a72afbc627b943e187f66bfe0214f7d989460badb57ddfbb8d","tests/drop/mod.rs":"6014e5b3530fe0827b9dc65ef01de6bfc1a0b1f8649dc69c3e40f61343985dc6","tests/test_autotrait.rs":"4a0dee1d8479aff7d4e39e06fb750df4b6e9cac492099bbab91ed20a5248e457","tests/test_backtrace.rs":"fa323eec398ca29f95a1cda7cd52602d7550d251cf0ee0791100a477e0656ed9","tests/test_boxed.rs":"09eb41525fc3cecb764e6778be876d1d4ffb81fa096659ca7ff2e753d3f2030c","tests/test_chain.rs":"262727a8ac16a701bf71c86d768e14452a77fffcebb34943186a0cbb87161866","tests/test_context.rs":"4746fa09f5ae9284304d2bb394350f089ce8ca5c2f0418b34145f3588e2aeb58","tests/test_convert.rs":"06562ab10fd1d88990a38ed400eb6ab4707e89c7f1e5cd1125992b4615ad8046","tests/test_downcast.rs":"c30595e7dab09f0d1246a554a6fc1f0857665234498ff13eb7df7597d0a4718d","tests/test_ensure.rs":"6d957308486ed80d4b9ae2c4ddaafb52f4a39145479cd93a9eddb927b57b03ec","tests/test_ffi.rs":"161a32a63dbdda98e129e2f943afb3fae4e68ca2cee1fef40f18e84b1e74138b","tests/test_fmt.rs":"f2e5123bd2232f59809f633e955027a2d0e9aa567dc8eedbee417eeebfa76e60","tests/test_macros.rs":"074a6d20e953d38d44c8860aa9083b7570c3cd58b0f632bef37d290b60aa5067","tests/test_repr.rs":"053356028202f3fea232745ab3aa8eba05fec011da43fcb8f856c81927f455cd","tests/test_source.rs":"54bb2d6fc197ede956f7696f86371357e4c14665a685d83a54b94fbfa6511d95","tests/ui/chained-comparison.rs":"910c5b8fdc859eabc2d6bc99b40569327f876cc85575039c4c3abf2c3977f1df","tests/ui/chained-comparison.stderr":"4f747b5a7e118a5d01c45e5d873c7f9461064e182b465dacb51ebf0c74abc235","tests/ui/empty-ensure.rs":"cc27e33cf5a48c9da6c1428a2369ca42dfa278229e479208f18efce5a4b12dcf","tests/ui/empty-ensure.stderr":"4a10e37a7eb01e15df621dd7ae340e71eb1b1e27bdd8da987bc3c5dc23bc437c","tests/ui/must-use.rs":"ec808205dd1957405858e72d67ae797de6059646858177840d9236554d3bc216","tests/ui/must-use.stderr":"211bddda8eed673b87e886ccd2beeb2f444c347d2be8cbd6f4c0dd2e3bb736a1","tests/ui/no-impl.rs":"f6262246417870658aa407892096680e0fc251873a33ed3ea4aa5f36b856d616","tests/ui/no-impl.stderr":"704ea781435ed5f2780b7af28c88cf8915e5475c8bf9ea6b9fe764d7b0611ccd","tests/ui/temporary-value.rs":"5b41a722c1de06cf094a9778d772f1fbde2f11e4fabfcd1d63020f930bfda107","tests/ui/temporary-value.stderr":"85c060a15ec8dad4a1971706e22e048bb3d3b1d1307b56628fd03e95563bdfce","tests/ui/wrong-interpolation.rs":"27554486996e93cc5ae9b05f74cd6b8c92d0654284741bc3d1426dcf622c8ea1","tests/ui/wrong-interpolation.stderr":"86394096d6b66ce0355c77a466dfb355ebe700154f82412dad391767c007290e"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"2b9bbb7069087bdff3bb65c77f5a097a646046eaf140639622ffee9b41227e93","Android.bp":"19834c7501599ed756a6e2427e00e3ebab75ba73288d19cd164a7bd9f162d840","Cargo.toml":"ac95f981b23c70ea175e59704904b74ead55d82a37d98629b44ed9f8ea164469","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-MIT":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","METADATA":"bcae4642b151f8ba51561f3a2a2d39ec6c236b292b0b9c2e7d6f124283aa6587","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","NOTICE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","README.md":"183e2c7bed174e9a35c3917de2160585f057bf302d56958329de0d867e1ce537","TEST_MAPPING":"29c108f688eb487511b09dad52fd194a6c615116e8b6cbd1e086bfd0446fbe49","build.rs":"37a90d5fe4a386cdf72c0a81f40d49572e0e8e44b3c5c4c034c6288bcd01b60b","build/probe.rs":"ca94474c6ba3d02f68acda33b5cf060ba7c21c916a3925fec514212861d0e25c","cargo_embargo.json":"8de1ddbaead22702faddd35234241c9bac36a1732a4d91d693ac3c9f1ef9de27","patches/0001-Support-RUST_BACKTRACE-settings-in-test_fmt.patch":"3d7d29ffe13113a36e0cac95abafb1dec4fbd27d8527ca0eba357c1fcbb793b8","rust-toolchain.toml":"25bc44c2a4cb625e0f16003c73ac0db2fc79a3b79a5b0e6d4b6175c6dbe5af69","src/backtrace.rs":"bff4118d23ae4585136bea47b6ce87ebb1d836ad4a962dcc2ef35ccabc7d518a","src/chain.rs":"9b925129e4aa99f6aaa66f801752cace3924ddeabb858655dae7d82083c5f05a","src/context.rs":"5903781a8cdf048199cd29b065714f7f1b1d3b4baa3b982a40901ef0404e1231","src/ensure.rs":"3c2f8c92d1b878d16caa2a1cef527eff4afa0184e76fecba2454974b0bebc50f","src/error.rs":"873995ea757d30a10ab7db12352065bb0c0ff082f0ccae2489eb838d92150f31","src/fmt.rs":"21689e9443109fa58677269fc6c6004909c63677da0886e8d99e2b8d63c15438","src/kind.rs":"3f6731b901afe9be7877db5a125d0e18ee2ddd8d4b7a572534cd132b9d5e144a","src/lib.rs":"82761355a51533ba8eecf44c68496e2218321f11bb50aac294465491b51aff1e","src/macros.rs":"ea096b7a733c527eac71fac0479439e9a6d9860264796a640fc69b83dae39bf3","src/ptr.rs":"fb5381f35e251f864d19bbf5c12267500e3f1dba4b2a3b778c43a28f9d37ddf1","src/wrapper.rs":"8a7323dd2981eb7faf05bba78b9a989f7f6ade45adae5a082616631cea3dc79a","tests/common/mod.rs":"d94b75b7944203361428a1c836608fb591b794756dfc05e64f82d6ac4462ce79","tests/compiletest.rs":"5876a4728abd95ed4ed3b78777fe95428d32a32730d7718f58001bdbd4d1e168","tests/drop/mod.rs":"6014e5b3530fe0827b9dc65ef01de6bfc1a0b1f8649dc69c3e40f61343985dc6","tests/test_autotrait.rs":"f3a4992b0a9c7e68395f8c6ffe7256c64a0effb729dbb638dde5bfc596df74f6","tests/test_backtrace.rs":"12f8d2bc280eb7a843c1ec423ed74c156deeebcb2f4f0df6657fc32661d21d9a","tests/test_boxed.rs":"09eb41525fc3cecb764e6778be876d1d4ffb81fa096659ca7ff2e753d3f2030c","tests/test_chain.rs":"262727a8ac16a701bf71c86d768e14452a77fffcebb34943186a0cbb87161866","tests/test_context.rs":"4746fa09f5ae9284304d2bb394350f089ce8ca5c2f0418b34145f3588e2aeb58","tests/test_convert.rs":"06562ab10fd1d88990a38ed400eb6ab4707e89c7f1e5cd1125992b4615ad8046","tests/test_downcast.rs":"c30595e7dab09f0d1246a554a6fc1f0857665234498ff13eb7df7597d0a4718d","tests/test_ensure.rs":"6a3f2121ad073878599c0c13631f6897351e2890a44ed7b87b148680f59a433f","tests/test_ffi.rs":"161a32a63dbdda98e129e2f943afb3fae4e68ca2cee1fef40f18e84b1e74138b","tests/test_fmt.rs":"2a971e5e9595a0af78325658cb74fa0e88fc39da8af05ec8c443dd35b359fccc","tests/test_macros.rs":"8b6f94d010bf74947e73862ca117e786ad440a0d800e387964bd0320d47f73ae","tests/test_repr.rs":"aac784a91c2347f397b960a92cfe6c56aba38f68216579e3e802e2cac131f761","tests/test_source.rs":"54bb2d6fc197ede956f7696f86371357e4c14665a685d83a54b94fbfa6511d95","tests/ui/chained-comparison.rs":"910c5b8fdc859eabc2d6bc99b40569327f876cc85575039c4c3abf2c3977f1df","tests/ui/chained-comparison.stderr":"4f747b5a7e118a5d01c45e5d873c7f9461064e182b465dacb51ebf0c74abc235","tests/ui/empty-ensure.rs":"cc27e33cf5a48c9da6c1428a2369ca42dfa278229e479208f18efce5a4b12dcf","tests/ui/empty-ensure.stderr":"4a10e37a7eb01e15df621dd7ae340e71eb1b1e27bdd8da987bc3c5dc23bc437c","tests/ui/ensure-nonbool.rs":"81e39527169c0cc2e0c34bbf4714570efb21ce65ad7e7abe421a5ab87c6da1c5","tests/ui/ensure-nonbool.stderr":"2819e6e4261e3b2a2e10d177d1c8f9622c8723843d2bb2cc8ef7a16acd9630c1","tests/ui/must-use.rs":"ec808205dd1957405858e72d67ae797de6059646858177840d9236554d3bc216","tests/ui/must-use.stderr":"211bddda8eed673b87e886ccd2beeb2f444c347d2be8cbd6f4c0dd2e3bb736a1","tests/ui/no-impl.rs":"f6262246417870658aa407892096680e0fc251873a33ed3ea4aa5f36b856d616","tests/ui/no-impl.stderr":"850e114f66992b8ec3a7c52e394195be98cdb55176b01a2e0e61db7fd0a5ac49","tests/ui/temporary-value.rs":"5b41a722c1de06cf094a9778d772f1fbde2f11e4fabfcd1d63020f930bfda107","tests/ui/temporary-value.stderr":"85c060a15ec8dad4a1971706e22e048bb3d3b1d1307b56628fd03e95563bdfce","tests/ui/wrong-interpolation.rs":"27554486996e93cc5ae9b05f74cd6b8c92d0654284741bc3d1426dcf622c8ea1","tests/ui/wrong-interpolation.stderr":"86394096d6b66ce0355c77a466dfb355ebe700154f82412dad391767c007290e"}}
\ No newline at end of file
diff --git a/crates/anyhow/.cargo-checksum.json b/crates/anyhow/.cargo-checksum.json
index 367a669..f976510 100644
--- a/crates/anyhow/.cargo-checksum.json
+++ b/crates/anyhow/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"1696b9f34686556027ae9ba768e09f5e4a2362291158399fed2a1891a13d02ed","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"0999fd320cdb3300dd22ff03b97cd41945cc9833a02a5b7c53ed36ab6d6f66e7","build.rs":"a5ac61a8922f6b9bf319e2f8c0c20bdafb362b9c1f7805fc6d878660708e5ac2","build/probe.rs":"b8b792036f13c9c1fbc6b1244198ea2305e61ddfcda3856563b581dcb1e1fe6e","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/backtrace.rs":"652ab0ff85c57cb6d34b97e15a705494f50aef77fc3916333d2b25ee05e6406c","src/chain.rs":"6edefc5f3c7d69683095862e54e3bb56faba5b3387bf2eeaed429da090007a0a","src/context.rs":"04e4b80b9f6d8163edc53455b98ab0c40cb9ad104bcf0c74f8075f22024471ab","src/ensure.rs":"d4c2588608e529275bfee1c1afc8860d7def868ab01e95a692a995ee06b2936e","src/error.rs":"a274234af662770340b237c9016beea2f94e7906f3fe69d0d78057929889f25b","src/fmt.rs":"b27311c860a9bd7c2b16367a30fc5131b3eea56751e69208d196dfc656a2ba91","src/kind.rs":"89883cd3287921355ee99c988fb7687beb77644c3dec6fb3bb1308db5d6dc51a","src/lib.rs":"bbe72815f1ab2fdba675990e4083b77f62a96e76031a55ce5ad27ef98a230f2b","src/macros.rs":"dd35f2ec2a0a25e4504fb04bcd42f6d0963bc0035aaaefc412f5ee1d78945fe1","src/ptr.rs":"4cb31d2f815b178daf951bfb94a1930383e056c0ca68d494603f45d8eea35d50","src/wrapper.rs":"8800848623b464eb19e77550201e446ff6913c8c39537fe6f70df9e2b43a9b21","tests/common/mod.rs":"f9088c2d7afafa64ff730b629272045b776bfafc2f5957508242da630635f2e1","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/drop/mod.rs":"08c3e553c1cc0d2dbd936fc45f4b5b1105057186affd6865e8d261e05f0f0646","tests/test_autotrait.rs":"ecccf9202a33611f64b76598806aa82abec2560ae058e32f63fb2fb3ef225be9","tests/test_backtrace.rs":"ed144f90bf62cc441de067f6cee09ece94bca9da8f9b492d11d3dc652ba83e26","tests/test_boxed.rs":"6b26db0e2eb72afe9af7352ea820837aab90f8d486294616dd5dc34c1b94038c","tests/test_chain.rs":"3a8a8d7569913bd98c0e27c69d0bda35101e7fde7c056ed57cdd8ed018e4cbcb","tests/test_context.rs":"8409c53b328562c11e822bd6c3cd17e0d4d50b9bbb8fc3617333fd77303a6a33","tests/test_convert.rs":"7e7a8b4772a427a911014ac4d1083f9519000e786177f898808980dd9bdfde61","tests/test_downcast.rs":"797e69a72d125758c4c4897e5dc776d549d52cc9a6a633e0a33193f588a62b88","tests/test_ensure.rs":"89bb15f2a6288037bcf6ad976705038d9bea714da4244dee8314c720f88393c8","tests/test_ffi.rs":"d0cb4c1d6d9154090982dee72ae3ebe05a5981f976058c3250f1c9da5a45edef","tests/test_fmt.rs":"81b14dd207ba5fbf02aaed031646810906c9c9c2fc5cabffc8e88f82462be499","tests/test_macros.rs":"11f05010bc9b16319884c1286444100e30cddc2ecd1ffe5e0fd3fee5ffb32683","tests/test_repr.rs":"b3fa96b52a98b2111e845b59974910acb107a6526514c80fc5d9db7eed402682","tests/test_source.rs":"b80723cf635a4f8c4df21891b34bfab9ed2b2aa407e7a2f826d24e334cd5f88e","tests/ui/chained-comparison.rs":"6504b03d95b5acc232a7f4defc9f343b2be6733bf475fa0992e8e6545b912bd4","tests/ui/chained-comparison.stderr":"7f1d0a8c251b0ede2d30b3087ec157fc660945c97a642c4a5acf5a14ec58de34","tests/ui/empty-ensure.rs":"ab5bf37c846a0d689f26ce9257a27228411ed64154f9c950f1602d88a355d94b","tests/ui/empty-ensure.stderr":"315782f5f4246290fe190e3767b22c3dcaffaabc19c5ace0373537d53e765278","tests/ui/must-use.rs":"fb59860b43f673bf4a430a6036ba463e95028844d8dd4243cfe5ebc7f2be582f","tests/ui/must-use.stderr":"c2848c5f254b4c061eea6714d9baf709924aba06619eaf2a8b3aee1266b75f9e","tests/ui/no-impl.rs":"fab6cbf2f6ea510b86f567dfb3b7c31250a9fd71ae5d110dbb9188be569ec593","tests/ui/no-impl.stderr":"04415aeaa14995f47f06f35fb1f6971d332d2110aabca920c30ab0803d6a0a5e","tests/ui/temporary-value.rs":"4dcc96271b2403e6372cf4cfc813445e5ce4365fc6e156b6bc38274098499a70","tests/ui/temporary-value.stderr":"171f6c1c962503855480696e5d39e68946ec2a027b61a6f36ca1ad1b40265c5d","tests/ui/wrong-interpolation.rs":"9c44d4674c2dccd27b9dedd03341346ec02d993b41793ee89b5755202e7e367e","tests/ui/wrong-interpolation.stderr":"301e60e2eb9401782c7dc0b3580613a4cb2aafd4cc8065734a630a62e1161aa5"},"package":"080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca"}
\ No newline at end of file
+{"files":{"Cargo.toml":"c48ec90cc7af9588407beaafaebf22839f25cf8bcb7a3c6cac5cc8c83bde3a91","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"136d2b44cc4060192516f18e43ec3eafb65693c1819a80a867e7a00c60a45ee6","build.rs":"27bcb3380f8b9b52a12d1aedad324858a94de974f17efa86ff93aa7e556b3798","build/probe.rs":"ee0a4518493c0b3cca121ed2e937b1779eb7e8313a5c4d5fc5aea28ff015366b","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/backtrace.rs":"bbaa0e0e228475c9c9532786e305cf04f53729f386c48adb1d93bb8ce07f37ad","src/chain.rs":"85af447405f075633fab186b7f1c94d7f33a36474f239c50a961b2d6197d5426","src/context.rs":"a80ec8f297c1eae04653a6786042e316c5ff2fa6f5ea8566108bee8bdcc705cb","src/ensure.rs":"709524741c8f9365e01cb36fc2349a8724513de02cf9e253809a93af8d6a7b6e","src/error.rs":"c212c4599541c7561d5098aa61a9d112d6291ab181502e7cf874cc7085083398","src/fmt.rs":"adf4be906b29900153bfb4b767a6049d58697dc3bcce7dfbb85ca773f5de5b33","src/kind.rs":"ddcabf15b3b47a4ef16ed361c45cc0cc82e7be90622995ff6c04b3fec78bb04f","src/lib.rs":"bd57600ee8caa6a1c2fc9a60befa627223add2177527db49c144c902112e3698","src/macros.rs":"875797636fde708dcb9c82e0cb3107cf38334086274aaada267fb5bfd60547a9","src/ptr.rs":"4cb31d2f815b178daf951bfb94a1930383e056c0ca68d494603f45d8eea35d50","src/wrapper.rs":"d4e45caee3c2d861d4609a8141310d5c901af59a57d5f0a0de30251347dbd23c","tests/common/mod.rs":"f9088c2d7afafa64ff730b629272045b776bfafc2f5957508242da630635f2e1","tests/compiletest.rs":"4e381aa8ca3eabb7ac14d1e0c3700b3223e47640547a6988cfa13ad68255f60f","tests/drop/mod.rs":"08c3e553c1cc0d2dbd936fc45f4b5b1105057186affd6865e8d261e05f0f0646","tests/test_autotrait.rs":"ba9bc18416115cb48fd08675a3e7fc89584de7926dad6b2be6645dc13d5931df","tests/test_backtrace.rs":"60afdd7ee5850dc22625ff486fe41c47fd322db874a93c4871ddfed2bf603930","tests/test_boxed.rs":"6b26db0e2eb72afe9af7352ea820837aab90f8d486294616dd5dc34c1b94038c","tests/test_chain.rs":"3a8a8d7569913bd98c0e27c69d0bda35101e7fde7c056ed57cdd8ed018e4cbcb","tests/test_context.rs":"8409c53b328562c11e822bd6c3cd17e0d4d50b9bbb8fc3617333fd77303a6a33","tests/test_convert.rs":"7e7a8b4772a427a911014ac4d1083f9519000e786177f898808980dd9bdfde61","tests/test_downcast.rs":"797e69a72d125758c4c4897e5dc776d549d52cc9a6a633e0a33193f588a62b88","tests/test_ensure.rs":"5ac28daf6889e957134309c0a0fbdec89b6bd974596e2205fbc4e8c1bb02ee5b","tests/test_ffi.rs":"d0cb4c1d6d9154090982dee72ae3ebe05a5981f976058c3250f1c9da5a45edef","tests/test_fmt.rs":"0e49b48f08e4faaf03e2f202e1efc5250018876c4e1b01b8379d7a38ae8df870","tests/test_macros.rs":"68673942662a43bceee62aaed69c25d7ddbc55e25d62d528e13033c3e2e756cd","tests/test_repr.rs":"034dee888abd08741e11ac2e95ef4fcb2ab3943d0a76e8e976db404658e1a252","tests/test_source.rs":"b80723cf635a4f8c4df21891b34bfab9ed2b2aa407e7a2f826d24e334cd5f88e","tests/ui/chained-comparison.rs":"6504b03d95b5acc232a7f4defc9f343b2be6733bf475fa0992e8e6545b912bd4","tests/ui/chained-comparison.stderr":"7f1d0a8c251b0ede2d30b3087ec157fc660945c97a642c4a5acf5a14ec58de34","tests/ui/empty-ensure.rs":"ab5bf37c846a0d689f26ce9257a27228411ed64154f9c950f1602d88a355d94b","tests/ui/empty-ensure.stderr":"315782f5f4246290fe190e3767b22c3dcaffaabc19c5ace0373537d53e765278","tests/ui/ensure-nonbool.rs":"7e57cb93fbcd82959b36586ed6bd2ad978b051fe5facd5274651fde6b1600905","tests/ui/ensure-nonbool.stderr":"0b4d1611e3bb65081bf38c1e49b1f12e5096738f276608661016e68f1fe13f7c","tests/ui/must-use.rs":"fb59860b43f673bf4a430a6036ba463e95028844d8dd4243cfe5ebc7f2be582f","tests/ui/must-use.stderr":"c2848c5f254b4c061eea6714d9baf709924aba06619eaf2a8b3aee1266b75f9e","tests/ui/no-impl.rs":"fab6cbf2f6ea510b86f567dfb3b7c31250a9fd71ae5d110dbb9188be569ec593","tests/ui/no-impl.stderr":"0d8ed712d25de898eae18cfdffc575a47f4d5596346058cf6cd50d016c4f8ce8","tests/ui/temporary-value.rs":"4dcc96271b2403e6372cf4cfc813445e5ce4365fc6e156b6bc38274098499a70","tests/ui/temporary-value.stderr":"171f6c1c962503855480696e5d39e68946ec2a027b61a6f36ca1ad1b40265c5d","tests/ui/wrong-interpolation.rs":"9c44d4674c2dccd27b9dedd03341346ec02d993b41793ee89b5755202e7e367e","tests/ui/wrong-interpolation.stderr":"301e60e2eb9401782c7dc0b3580613a4cb2aafd4cc8065734a630a62e1161aa5"},"package":"34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04"}
\ No newline at end of file
diff --git a/crates/anyhow/Android.bp b/crates/anyhow/Android.bp
index 9b9c2cf..cc6311c 100644
--- a/crates/anyhow/Android.bp
+++ b/crates/anyhow/Android.bp
@@ -18,7 +18,7 @@
     host_supported: true,
     crate_name: "anyhow",
     cargo_env_compat: true,
-    cargo_pkg_version: "1.0.79",
+    cargo_pkg_version: "1.0.95",
     crate_root: "src/lib.rs",
     test_suites: ["general-tests"],
     auto_gen_config: true,
@@ -41,7 +41,7 @@
     host_supported: true,
     crate_name: "test_autotrait",
     cargo_env_compat: true,
-    cargo_pkg_version: "1.0.79",
+    cargo_pkg_version: "1.0.95",
     crate_root: "tests/test_autotrait.rs",
     test_suites: ["general-tests"],
     auto_gen_config: true,
@@ -65,7 +65,7 @@
     host_supported: true,
     crate_name: "test_boxed",
     cargo_env_compat: true,
-    cargo_pkg_version: "1.0.79",
+    cargo_pkg_version: "1.0.95",
     crate_root: "tests/test_boxed.rs",
     test_suites: ["general-tests"],
     auto_gen_config: true,
@@ -89,7 +89,7 @@
     host_supported: true,
     crate_name: "test_chain",
     cargo_env_compat: true,
-    cargo_pkg_version: "1.0.79",
+    cargo_pkg_version: "1.0.95",
     crate_root: "tests/test_chain.rs",
     test_suites: ["general-tests"],
     auto_gen_config: true,
@@ -113,7 +113,7 @@
     host_supported: true,
     crate_name: "test_context",
     cargo_env_compat: true,
-    cargo_pkg_version: "1.0.79",
+    cargo_pkg_version: "1.0.95",
     crate_root: "tests/test_context.rs",
     test_suites: ["general-tests"],
     auto_gen_config: true,
@@ -137,7 +137,7 @@
     host_supported: true,
     crate_name: "test_convert",
     cargo_env_compat: true,
-    cargo_pkg_version: "1.0.79",
+    cargo_pkg_version: "1.0.95",
     crate_root: "tests/test_convert.rs",
     test_suites: ["general-tests"],
     auto_gen_config: true,
@@ -161,7 +161,7 @@
     host_supported: true,
     crate_name: "test_downcast",
     cargo_env_compat: true,
-    cargo_pkg_version: "1.0.79",
+    cargo_pkg_version: "1.0.95",
     crate_root: "tests/test_downcast.rs",
     test_suites: ["general-tests"],
     auto_gen_config: true,
@@ -185,7 +185,7 @@
     host_supported: true,
     crate_name: "test_fmt",
     cargo_env_compat: true,
-    cargo_pkg_version: "1.0.79",
+    cargo_pkg_version: "1.0.95",
     crate_root: "tests/test_fmt.rs",
     test_suites: ["general-tests"],
     auto_gen_config: true,
@@ -209,7 +209,7 @@
     host_supported: true,
     crate_name: "test_macros",
     cargo_env_compat: true,
-    cargo_pkg_version: "1.0.79",
+    cargo_pkg_version: "1.0.95",
     crate_root: "tests/test_macros.rs",
     test_suites: ["general-tests"],
     auto_gen_config: true,
@@ -233,7 +233,7 @@
     host_supported: true,
     crate_name: "test_repr",
     cargo_env_compat: true,
-    cargo_pkg_version: "1.0.79",
+    cargo_pkg_version: "1.0.95",
     crate_root: "tests/test_repr.rs",
     test_suites: ["general-tests"],
     auto_gen_config: true,
@@ -257,7 +257,7 @@
     host_supported: true,
     crate_name: "test_source",
     cargo_env_compat: true,
-    cargo_pkg_version: "1.0.79",
+    cargo_pkg_version: "1.0.95",
     crate_root: "tests/test_source.rs",
     test_suites: ["general-tests"],
     auto_gen_config: true,
@@ -281,7 +281,7 @@
     host_supported: true,
     crate_name: "anyhow",
     cargo_env_compat: true,
-    cargo_pkg_version: "1.0.79",
+    cargo_pkg_version: "1.0.95",
     crate_root: "src/lib.rs",
     edition: "2018",
     features: [
diff --git a/crates/anyhow/Cargo.toml b/crates/anyhow/Cargo.toml
index b92e7a3..119adf4 100644
--- a/crates/anyhow/Cargo.toml
+++ b/crates/anyhow/Cargo.toml
@@ -13,8 +13,14 @@
 edition = "2018"
 rust-version = "1.39"
 name = "anyhow"
-version = "1.0.79"
+version = "1.0.95"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
+build = "build.rs"
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
 description = "Flexible concrete Error type built on std::error::Error"
 documentation = "https://docs.rs/anyhow"
 readme = "README.md"
@@ -30,16 +36,74 @@
 repository = "https://github.com/dtolnay/anyhow"
 
 [package.metadata.docs.rs]
-rustdoc-args = [
-    "--cfg",
-    "doc_cfg",
-    "--generate-link-to-definition",
-]
+rustdoc-args = ["--generate-link-to-definition"]
 targets = ["x86_64-unknown-linux-gnu"]
 
+[features]
+default = ["std"]
+std = []
+
 [lib]
+name = "anyhow"
+path = "src/lib.rs"
 doc-scrape-examples = false
 
+[[test]]
+name = "compiletest"
+path = "tests/compiletest.rs"
+
+[[test]]
+name = "test_autotrait"
+path = "tests/test_autotrait.rs"
+
+[[test]]
+name = "test_backtrace"
+path = "tests/test_backtrace.rs"
+
+[[test]]
+name = "test_boxed"
+path = "tests/test_boxed.rs"
+
+[[test]]
+name = "test_chain"
+path = "tests/test_chain.rs"
+
+[[test]]
+name = "test_context"
+path = "tests/test_context.rs"
+
+[[test]]
+name = "test_convert"
+path = "tests/test_convert.rs"
+
+[[test]]
+name = "test_downcast"
+path = "tests/test_downcast.rs"
+
+[[test]]
+name = "test_ensure"
+path = "tests/test_ensure.rs"
+
+[[test]]
+name = "test_ffi"
+path = "tests/test_ffi.rs"
+
+[[test]]
+name = "test_fmt"
+path = "tests/test_fmt.rs"
+
+[[test]]
+name = "test_macros"
+path = "tests/test_macros.rs"
+
+[[test]]
+name = "test_repr"
+path = "tests/test_repr.rs"
+
+[[test]]
+name = "test_source"
+path = "tests/test_source.rs"
+
 [dependencies.backtrace]
 version = "0.3.51"
 optional = true
@@ -56,12 +120,8 @@
 features = ["full"]
 
 [dev-dependencies.thiserror]
-version = "1.0.45"
+version = "2"
 
 [dev-dependencies.trybuild]
 version = "1.0.66"
 features = ["diff"]
-
-[features]
-default = ["std"]
-std = []
diff --git a/crates/anyhow/METADATA b/crates/anyhow/METADATA
index 3600ae8..164ed5c 100644
--- a/crates/anyhow/METADATA
+++ b/crates/anyhow/METADATA
@@ -1,17 +1,17 @@
 name: "anyhow"
 description: "Flexible concrete Error type built on std::error::Error"
 third_party {
-  version: "1.0.79"
+  version: "1.0.95"
   license_type: NOTICE
   last_upgrade_date {
-    year: 2024
+    year: 2025
     month: 1
-    day: 31
+    day: 15
   }
   homepage: "https://crates.io/crates/anyhow"
   identifier {
     type: "Archive"
-    value: "https://static.crates.io/crates/anyhow/anyhow-1.0.79.crate"
-    version: "1.0.79"
+    value: "https://static.crates.io/crates/anyhow/anyhow-1.0.95.crate"
+    version: "1.0.95"
   }
 }
diff --git a/crates/anyhow/README.md b/crates/anyhow/README.md
index ccf3097..ff83168 100644
--- a/crates/anyhow/README.md
+++ b/crates/anyhow/README.md
@@ -26,7 +26,7 @@
   return type of any fallible function.
 
   Within the function, use `?` to easily propagate any error that implements the
-  `std::error::Error` trait.
+  [`std::error::Error`] trait.
 
   ```rust
   use anyhow::Result;
@@ -38,6 +38,8 @@
   }
   ```
 
+  [`std::error::Error`]: https://doc.rust-lang.org/std/error/trait.Error.html
+
 - Attach context to help the person troubleshooting the error understand where
   things went wrong. A low-level error like "No such file or directory" can be
   annoying to debug without more context about what higher level step the
@@ -125,8 +127,8 @@
 
 ## No-std support
 
-In no_std mode, the same API is almost all available and works the same way. To
-depend on Anyhow in no_std mode, disable our default enabled "std" feature in
+In no_std mode, almost all of the same API is available and works the same way.
+To depend on Anyhow in no_std mode, disable our default enabled "std" feature in
 Cargo.toml. A global allocator is required.
 
 ```toml
@@ -134,10 +136,10 @@
 anyhow = { version = "1.0", default-features = false }
 ```
 
-Since the `?`-based error conversions would normally rely on the
-`std::error::Error` trait which is only available through std, no_std mode will
-require an explicit `.map_err(Error::msg)` when working with a non-Anyhow error
-type inside a function that returns Anyhow's error type.
+With versions of Rust older than 1.81, no_std mode may require an additional
+`.map_err(Error::msg)` when working with a non-Anyhow error type inside a
+function that returns Anyhow's error type, as the trait that `?`-based error
+conversions are defined by is only available in std in those old versions.
 
 <br>
 
diff --git a/crates/anyhow/build.rs b/crates/anyhow/build.rs
index 7e95e6b..8124690 100644
--- a/crates/anyhow/build.rs
+++ b/crates/anyhow/build.rs
@@ -1,5 +1,8 @@
 use std::env;
 use std::ffi::OsString;
+use std::fs;
+use std::io::ErrorKind;
+use std::iter;
 use std::path::Path;
 use std::process::{self, Command, Stdio};
 use std::str;
@@ -64,6 +67,17 @@
         None => return,
     };
 
+    if rustc >= 80 {
+        println!("cargo:rustc-check-cfg=cfg(anyhow_nightly_testing)");
+        println!("cargo:rustc-check-cfg=cfg(anyhow_no_core_error)");
+        println!("cargo:rustc-check-cfg=cfg(anyhow_no_core_unwind_safe)");
+        println!("cargo:rustc-check-cfg=cfg(anyhow_no_fmt_arguments_as_str)");
+        println!("cargo:rustc-check-cfg=cfg(anyhow_no_ptr_addr_of)");
+        println!("cargo:rustc-check-cfg=cfg(anyhow_no_unsafe_op_in_unsafe_fn_lint)");
+        println!("cargo:rustc-check-cfg=cfg(error_generic_member_access)");
+        println!("cargo:rustc-check-cfg=cfg(std_backtrace)");
+    }
+
     if rustc < 51 {
         // core::ptr::addr_of
         // https://blog.rust-lang.org/2021/03/25/Rust-1.51.0.html#stabilized-apis
@@ -80,11 +94,23 @@
         println!("cargo:rustc-cfg=anyhow_no_unsafe_op_in_unsafe_fn_lint");
     }
 
+    if rustc < 56 {
+        // core::panic::{UnwindSafe, RefUnwindSafe}
+        // https://blog.rust-lang.org/2021/10/21/Rust-1.56.0.html#stabilized-apis
+        println!("cargo:rustc-cfg=anyhow_no_core_unwind_safe");
+    }
+
     if !error_generic_member_access && cfg!(feature = "std") && rustc >= 65 {
         // std::backtrace::Backtrace
         // https://blog.rust-lang.org/2022/11/03/Rust-1.65.0.html#stabilized-apis
         println!("cargo:rustc-cfg=std_backtrace");
     }
+
+    if rustc < 81 {
+        // core::error::Error
+        // https://blog.rust-lang.org/2024/09/05/Rust-1.81.0.html#coreerrorerror
+        println!("cargo:rustc-cfg=anyhow_no_core_error");
+    }
 }
 
 fn compile_probe(rustc_bootstrap: bool) -> bool {
@@ -101,17 +127,25 @@
 
     let rustc = cargo_env_var("RUSTC");
     let out_dir = cargo_env_var("OUT_DIR");
+    let out_subdir = Path::new(&out_dir).join("probe");
     let probefile = Path::new("build").join("probe.rs");
 
-    // Make sure to pick up Cargo rustc configuration.
-    let mut cmd = if let Some(wrapper) = env::var_os("RUSTC_WRAPPER") {
-        let mut cmd = Command::new(wrapper);
-        // The wrapper's first argument is supposed to be the path to rustc.
-        cmd.arg(rustc);
-        cmd
-    } else {
-        Command::new(rustc)
-    };
+    if let Err(err) = fs::create_dir(&out_subdir) {
+        if err.kind() != ErrorKind::AlreadyExists {
+            eprintln!("Failed to create {}: {}", out_subdir.display(), err);
+            process::exit(1);
+        }
+    }
+
+    let rustc_wrapper = env::var_os("RUSTC_WRAPPER").filter(|wrapper| !wrapper.is_empty());
+    let rustc_workspace_wrapper =
+        env::var_os("RUSTC_WORKSPACE_WRAPPER").filter(|wrapper| !wrapper.is_empty());
+    let mut rustc = rustc_wrapper
+        .into_iter()
+        .chain(rustc_workspace_wrapper)
+        .chain(iter::once(rustc));
+    let mut cmd = Command::new(rustc.next().unwrap());
+    cmd.args(rustc);
 
     if !rustc_bootstrap {
         cmd.env_remove("RUSTC_BOOTSTRAP");
@@ -122,8 +156,9 @@
         .arg("--crate-name=anyhow")
         .arg("--crate-type=lib")
         .arg("--emit=dep-info,metadata")
+        .arg("--cap-lints=allow")
         .arg("--out-dir")
-        .arg(out_dir)
+        .arg(&out_subdir)
         .arg(probefile);
 
     if let Some(target) = env::var_os("TARGET") {
@@ -139,10 +174,22 @@
         }
     }
 
-    match cmd.status() {
+    let success = match cmd.status() {
         Ok(status) => status.success(),
         Err(_) => false,
+    };
+
+    // Clean up to avoid leaving nondeterministic absolute paths in the dep-info
+    // file in OUT_DIR, which causes nonreproducible builds in build systems
+    // that treat the entire OUT_DIR as an artifact.
+    if let Err(err) = fs::remove_dir_all(&out_subdir) {
+        if err.kind() != ErrorKind::NotFound {
+            eprintln!("Failed to clean up {}: {}", out_subdir.display(), err);
+            process::exit(1);
+        }
     }
+
+    success
 }
 
 fn rustc_minor_version() -> Option<u32> {
diff --git a/crates/anyhow/build/probe.rs b/crates/anyhow/build/probe.rs
index 21e776d..742d15c 100644
--- a/crates/anyhow/build/probe.rs
+++ b/crates/anyhow/build/probe.rs
@@ -4,9 +4,9 @@
 
 #![feature(error_generic_member_access)]
 
+use core::error::{self, Error, Request};
+use core::fmt::{self, Debug, Display};
 use std::backtrace::Backtrace;
-use std::error::{self, Error, Request};
-use std::fmt::{self, Debug, Display};
 
 struct MyError(Thing);
 struct Thing;
diff --git a/crates/anyhow/patches/0001-Support-RUST_BACKTRACE-settings-in-test_fmt.patch b/crates/anyhow/patches/0001-Support-RUST_BACKTRACE-settings-in-test_fmt.patch
index 55087e6..e453046 100644
--- a/crates/anyhow/patches/0001-Support-RUST_BACKTRACE-settings-in-test_fmt.patch
+++ b/crates/anyhow/patches/0001-Support-RUST_BACKTRACE-settings-in-test_fmt.patch
@@ -21,14 +21,14 @@
 index 9766d366..016b4b8c 100644
 --- b/tests/test_fmt.rs
 +++ a/tests/test_fmt.rs
-@@ -68,27 +68,27 @@ Error {
- 
+@@ -68,26 +68,26 @@
+
  #[test]
  fn test_display() {
 -    assert_eq!("g failed", h().unwrap_err().to_string());
 +    assert!(h().unwrap_err().to_string().starts_with("g failed"));
  }
- 
+
  #[test]
  fn test_altdisplay() {
 -    assert_eq!(EXPECTED_ALTDISPLAY_F, format!("{:#}", f().unwrap_err()));
@@ -38,9 +38,8 @@
 +    assert!(format!("{:#}", g().unwrap_err()).starts_with(EXPECTED_ALTDISPLAY_G));
 +    assert!(format!("{:#}", h().unwrap_err()).starts_with(EXPECTED_ALTDISPLAY_H));
  }
- 
+
  #[test]
- #[cfg_attr(not(std_backtrace), ignore)]
  fn test_debug() {
 -    assert_eq!(EXPECTED_DEBUG_F, format!("{:?}", f().unwrap_err()));
 -    assert_eq!(EXPECTED_DEBUG_G, format!("{:?}", g().unwrap_err()));
@@ -49,7 +48,7 @@
 +    assert!(format!("{:?}", g().unwrap_err()).starts_with(EXPECTED_DEBUG_G));
 +    assert!(format!("{:?}", h().unwrap_err()).starts_with(EXPECTED_DEBUG_H));
  }
- 
+
  #[test]
  fn test_altdebug() {
 -    assert_eq!(EXPECTED_ALTDEBUG_F, format!("{:#?}", f().unwrap_err()));
diff --git a/crates/anyhow/src/backtrace.rs b/crates/anyhow/src/backtrace.rs
index 65ad1cc..303f911 100644
--- a/crates/anyhow/src/backtrace.rs
+++ b/crates/anyhow/src/backtrace.rs
@@ -38,7 +38,8 @@
 #[cfg(error_generic_member_access)]
 macro_rules! backtrace_if_absent {
     ($err:expr) => {
-        match std::error::request_ref::<std::backtrace::Backtrace>($err as &dyn std::error::Error) {
+        match core::error::request_ref::<std::backtrace::Backtrace>($err as &dyn core::error::Error)
+        {
             Some(_) => None,
             None => backtrace!(),
         }
@@ -46,7 +47,7 @@
 }
 
 #[cfg(all(
-    feature = "std",
+    any(feature = "std", not(anyhow_no_core_error)),
     not(error_generic_member_access),
     any(std_backtrace, feature = "backtrace")
 ))]
@@ -56,7 +57,11 @@
     };
 }
 
-#[cfg(all(feature = "std", not(std_backtrace), not(feature = "backtrace")))]
+#[cfg(all(
+    any(feature = "std", not(anyhow_no_core_error)),
+    not(std_backtrace),
+    not(feature = "backtrace"),
+))]
 macro_rules! backtrace_if_absent {
     ($err:expr) => {
         None
@@ -65,11 +70,12 @@
 
 #[cfg(all(not(std_backtrace), feature = "backtrace"))]
 mod capture {
+    use alloc::borrow::{Cow, ToOwned as _};
+    use alloc::vec::Vec;
     use backtrace::{BacktraceFmt, BytesOrWideString, Frame, PrintFmt, SymbolName};
     use core::cell::UnsafeCell;
     use core::fmt::{self, Debug, Display};
     use core::sync::atomic::{AtomicUsize, Ordering};
-    use std::borrow::Cow;
     use std::env;
     use std::path::{self, Path, PathBuf};
     use std::sync::Once;
@@ -400,6 +406,6 @@
 }
 
 fn _assert_send_sync() {
-    fn _assert<T: Send + Sync>() {}
-    _assert::<Backtrace>();
+    fn assert<T: Send + Sync>() {}
+    assert::<Backtrace>();
 }
diff --git a/crates/anyhow/src/chain.rs b/crates/anyhow/src/chain.rs
index f7baff2..e56bc66 100644
--- a/crates/anyhow/src/chain.rs
+++ b/crates/anyhow/src/chain.rs
@@ -1,13 +1,13 @@
 use self::ChainState::*;
 use crate::StdError;
 
-#[cfg(feature = "std")]
-use std::vec;
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
+use alloc::vec::{self, Vec};
 
-#[cfg(feature = "std")]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 pub(crate) use crate::Chain;
 
-#[cfg(not(feature = "std"))]
+#[cfg(all(not(feature = "std"), anyhow_no_core_error))]
 pub(crate) struct Chain<'a> {
     state: ChainState<'a>,
 }
@@ -17,7 +17,7 @@
     Linked {
         next: Option<&'a (dyn StdError + 'static)>,
     },
-    #[cfg(feature = "std")]
+    #[cfg(any(feature = "std", not(anyhow_no_core_error)))]
     Buffered {
         rest: vec::IntoIter<&'a (dyn StdError + 'static)>,
     },
@@ -42,7 +42,7 @@
                 *next = error.source();
                 Some(error)
             }
-            #[cfg(feature = "std")]
+            #[cfg(any(feature = "std", not(anyhow_no_core_error)))]
             Buffered { rest } => rest.next(),
         }
     }
@@ -53,7 +53,7 @@
     }
 }
 
-#[cfg(feature = "std")]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 impl DoubleEndedIterator for Chain<'_> {
     fn next_back(&mut self) -> Option<Self::Item> {
         match &mut self.state {
@@ -84,13 +84,13 @@
                 }
                 len
             }
-            #[cfg(feature = "std")]
+            #[cfg(any(feature = "std", not(anyhow_no_core_error)))]
             Buffered { rest } => rest.len(),
         }
     }
 }
 
-#[cfg(feature = "std")]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 impl Default for Chain<'_> {
     fn default() -> Self {
         Chain {
diff --git a/crates/anyhow/src/context.rs b/crates/anyhow/src/context.rs
index 11b31ba..326c2a4 100644
--- a/crates/anyhow/src/context.rs
+++ b/crates/anyhow/src/context.rs
@@ -4,7 +4,7 @@
 use core::fmt::{self, Debug, Display, Write};
 
 #[cfg(error_generic_member_access)]
-use std::error::Request;
+use core::error::Request;
 
 mod ext {
     use super::*;
@@ -15,17 +15,17 @@
             C: Display + Send + Sync + 'static;
     }
 
-    #[cfg(feature = "std")]
+    #[cfg(any(feature = "std", not(anyhow_no_core_error)))]
     impl<E> StdError for E
     where
-        E: std::error::Error + Send + Sync + 'static,
+        E: crate::StdError + Send + Sync + 'static,
     {
         fn ext_context<C>(self, context: C) -> Error
         where
             C: Display + Send + Sync + 'static,
         {
             let backtrace = backtrace_if_absent!(&self);
-            Error::from_context(context, self, backtrace)
+            Error::construct_from_context(context, self, backtrace)
         }
     }
 
@@ -96,7 +96,7 @@
         // backtrace.
         match self {
             Some(ok) => Ok(ok),
-            None => Err(Error::from_display(context, backtrace!())),
+            None => Err(Error::construct_from_display(context, backtrace!())),
         }
     }
 
@@ -107,7 +107,7 @@
     {
         match self {
             Some(ok) => Ok(ok),
-            None => Err(Error::from_display(context(), backtrace!())),
+            None => Err(Error::construct_from_display(context(), backtrace!())),
         }
     }
 }
diff --git a/crates/anyhow/src/ensure.rs b/crates/anyhow/src/ensure.rs
index c40cb92..795757d 100644
--- a/crates/anyhow/src/ensure.rs
+++ b/crates/anyhow/src/ensure.rs
@@ -147,14 +147,22 @@
         $crate::__parse_ensure!(pat $stack $bail ($($fuel)*) {($($buf)* $let) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (0 $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($life:tt $colon:tt $($dup:tt)*) $label:lifetime : $($rest:tt)*) => {
-        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $life $colon) $($parse)*} ($($rest)*) $($rest)*)
+    (0 $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($lifetime:tt $colon:tt $($dup:tt)*) $label:lifetime : $($rest:tt)*) => {
+        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $lifetime $colon) $($parse)*} ($($rest)*) $($rest)*)
     };
 
     (0 $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($and:tt $mut:tt $($dup:tt)*) &mut $($rest:tt)*) => {
         $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $and $mut) $($parse)*} ($($rest)*) $($rest)*)
     };
 
+    (0 $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($and:tt $raw:tt $mut:tt $($dup:tt)*) &raw mut $($rest:tt)*) => {
+        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $and $raw $mut) $($parse)*} ($($rest)*) $($rest)*)
+    };
+
+    (0 $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($and:tt $raw:tt $const:tt $($dup:tt)*) &raw const $($rest:tt)*) => {
+        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $and $raw $const) $($parse)*} ($($rest)*) $($rest)*)
+    };
+
     (0 $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($and:tt $($dup:tt)*) & $($rest:tt)*) => {
         $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $and) $($parse)*} ($($rest)*) $($rest)*)
     };
@@ -163,6 +171,14 @@
         $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $andand $mut) $($parse)*} ($($rest)*) $($rest)*)
     };
 
+    (0 $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($andand:tt $raw:tt $mut:tt $($dup:tt)*) &&raw mut $($rest:tt)*) => {
+        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $andand $raw $mut) $($parse)*} ($($rest)*) $($rest)*)
+    };
+
+    (0 $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($andand:tt $raw:tt $const:tt $($dup:tt)*) &&raw const $($rest:tt)*) => {
+        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $andand $raw $const) $($parse)*} ($($rest)*) $($rest)*)
+    };
+
     (0 $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($andand:tt $($dup:tt)*) && $($rest:tt)*) => {
         $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $andand) $($parse)*} ($($rest)*) $($rest)*)
     };
@@ -236,17 +252,17 @@
         $crate::__parse_ensure!(atom $stack $bail ($($fuel)*) {($($buf)* $const $block) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (0 $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt $lit:literal $($rest:tt)*) => {
-        $crate::__parse_ensure!(atom $stack $bail ($($fuel)*) {($($buf)* $lit) $($parse)*} ($($rest)*) $($rest)*)
+    (0 $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($literal:tt $($dup:tt)*) $lit:literal $($rest:tt)*) => {
+        $crate::__parse_ensure!(atom $stack $bail ($($fuel)*) {($($buf)* $literal) $($parse)*} ($($rest)*) $($rest)*)
     };
 
     // path expressions
 
-    (0 $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $($dup:tt)*) :: $ident:ident $($rest:tt)*) => {
+    (0 $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $ident:tt $($dup:tt)*) :: $i:ident $($rest:tt)*) => {
         $crate::__parse_ensure!(epath (atom $stack) $bail ($($fuel)*) {($($buf)* $colons $ident) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (0 $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt $ident:ident $($rest:tt)*) => {
+    (0 $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($ident:tt $($dup:tt)*) $i:ident $($rest:tt)*) => {
         $crate::__parse_ensure!(epath (atom $stack) $bail ($($fuel)*) {($($buf)* $ident) $($parse)*} ($($rest)*) $($rest)*)
     };
 
@@ -258,15 +274,19 @@
         $crate::__parse_ensure!(generic (epath $stack) $bail ($($fuel)*) {($($buf)* $colons $langle) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (epath $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $($dup:tt)*) :: << $($rest:tt)*) => {
-        $crate::__parse_ensure!(generic (epath $stack) $bail ($($fuel)*) {($($buf)* $colons <) $($parse)*} (< $($rest)*) < $($rest)*)
+    (epath $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $langle:tt $($dup:tt)*) :: << $($rest:tt)*) => {
+        $crate::__parse_ensure!(type (qpath (tpath (arglist (epath $stack)))) $bail ($($fuel)*) {($($buf)* $colons $langle) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (epath $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $($dup:tt)*) :: <- $($rest:tt)*) => {
-        $crate::__parse_ensure!(generic (epath $stack) $bail ($($fuel)*) {($($buf)* $colons <) $($parse)*} (- $($rest)*) - $($rest)*)
+    (epath $stack:tt ($($bail:tt)*) (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt :: <- - $($rest:tt)*) => {
+        $crate::__fallback_ensure!($($bail)*)
     };
 
-    (epath $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $($dup:tt)*) :: $ident:ident $($rest:tt)*) => {
+    (epath $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $larrow:tt $($dup:tt)*) :: <- $lit:literal $($rest:tt)*) => {
+        $crate::__parse_ensure!(generic (epath $stack) $bail ($($fuel)*) {($($buf)* $colons $larrow) $($parse)*} ($($dup)*) $($dup)*)
+    };
+
+    (epath $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $ident:tt $($dup:tt)*) :: $i:ident $($rest:tt)*) => {
         $crate::__parse_ensure!(epath $stack $bail ($($fuel)*) {($($buf)* $colons $ident) $($parse)*} ($($rest)*) $($rest)*)
     };
 
@@ -282,6 +302,10 @@
         $crate::__parse_ensure!($pop $stack $bail ($($fuel)*) {($($buf)* $bang $args) $($parse)*} ($($rest)*) $($rest)*)
     };
 
+    (epath (split ($pop:ident $stack:tt)) $bail:tt (~$($fuel:tt)*) $parse:tt $dup:tt $($rest:tt)*) => {
+        $crate::__parse_ensure!($pop (split $stack) $bail ($($fuel)*) $parse $dup $($rest)*)
+    };
+
     (epath ($pop:ident $stack:tt) $bail:tt (~$($fuel:tt)*) $parse:tt $dup:tt $($rest:tt)*) => {
         $crate::__parse_ensure!($pop $stack $bail ($($fuel)*) $parse $dup $($rest)*)
     };
@@ -308,18 +332,26 @@
         $crate::__parse_ensure!(generic (atom $stack) $bail ($($fuel)*) {($($buf)* $dot $ident $colons $langle) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($dot:tt $ident:tt $colons:tt $($dup:tt)*) . $i:ident :: << $($rest:tt)*) => {
-        $crate::__parse_ensure!(generic (atom $stack) $bail ($($fuel)*) {($($buf)* $dot $ident $colons <) $($parse)*} (< $($rest)*) < $($rest)*)
+    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($dot:tt $ident:tt $colons:tt $langle:tt $($dup:tt)*) . $i:ident :: << $($rest:tt)*) => {
+        $crate::__parse_ensure!(type (qpath (tpath (arglist (atom $stack)))) $bail ($($fuel)*) {($($buf)* $dot $ident $colons $langle) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($dot:tt $ident:tt $colons:tt $($dup:tt)*) . $i:ident :: <- $($rest:tt)*) => {
-        $crate::__parse_ensure!(generic (atom $stack) $bail ($($fuel)*) {($($buf)* $dot $ident $colons <) $($parse)*} (- $($rest)*) - $($rest)*)
+    (atom $stack:tt ($($bail:tt)*) (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt . $i:ident :: <- - $($rest:tt)*) => {
+        $crate::__fallback_ensure!($($bail)*)
     };
 
-    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($dot:tt $($dup:tt)*) . $field:ident $($rest:tt)*) => {
+    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($dot:tt $ident:tt $colons:tt $larrow:tt $($dup:tt)*) . $i:ident :: <- $lit:literal $($rest:tt)*) => {
+        $crate::__parse_ensure!(generic (atom $stack) $bail ($($fuel)*) {($($buf)* $dot $ident $colons $larrow) $($parse)*} ($($dup)*) $($dup)*)
+    };
+
+    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($dot:tt $field:tt $($dup:tt)*) . $i:ident $($rest:tt)*) => {
         $crate::__parse_ensure!(atom $stack $bail ($($fuel)*) {($($buf)* $dot $field) $($parse)*} ($($rest)*) $($rest)*)
     };
 
+    (atom $stack:tt ($($bail:tt)*) (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt . - $($rest:tt)*) => {
+        $crate::__fallback_ensure!($($bail)*)
+    };
+
     (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($dot:tt $index:tt $($dup:tt)*) . $lit:literal $($rest:tt)*) => {
         $crate::__parse_ensure!(atom $stack $bail ($($fuel)*) {($($buf)* $dot $index) $($parse)*} ($($rest)*) $($rest)*)
     };
@@ -346,43 +378,51 @@
         $crate::__parse_ensure!(type $stack $bail ($($fuel)*) {($($buf)* $star $mut) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($and:tt $life:lifetime $mut:tt $($dup:tt)*) & $l:lifetime mut $($rest:tt)*) => {
-        $crate::__parse_ensure!(type $stack $bail ($($fuel)*) {($($buf)* $and $life $mut) $($parse)*} ($($rest)*) $($rest)*)
+    (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($and:tt $lifetime:tt $mut:tt $($dup:tt)*) & $l:lifetime mut $($rest:tt)*) => {
+        $crate::__parse_ensure!(type $stack $bail ($($fuel)*) {($($buf)* $and $lifetime $mut) $($parse)*} ($($rest)*) $($rest)*)
     };
 
     (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($and:tt $mut:tt $($dup:tt)*) & mut $($rest:tt)*) => {
         $crate::__parse_ensure!(type $stack $bail ($($fuel)*) {($($buf)* $and $mut) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($and:tt $life:lifetime $($dup:tt)*) & $l:lifetime $($rest:tt)*) => {
-        $crate::__parse_ensure!(type $stack $bail ($($fuel)*) {($($buf)* $and $life) $($parse)*} ($($rest)*) $($rest)*)
+    (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($and:tt $lifetime:tt $($dup:tt)*) & $l:lifetime $($rest:tt)*) => {
+        $crate::__parse_ensure!(type $stack $bail ($($fuel)*) {($($buf)* $and $lifetime) $($parse)*} ($($rest)*) $($rest)*)
     };
 
     (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($and:tt $($dup:tt)*) & $($rest:tt)*) => {
         $crate::__parse_ensure!(type $stack $bail ($($fuel)*) {($($buf)* $and) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($and:tt $life:lifetime $mut:tt $($dup:tt)*) && $l:lifetime mut $($rest:tt)*) => {
-        $crate::__parse_ensure!(type $stack $bail ($($fuel)*) {($($buf)* $and $life $mut) $($parse)*} ($($rest)*) $($rest)*)
+    (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($and:tt $lifetime:tt $mut:tt $($dup:tt)*) && $l:lifetime mut $($rest:tt)*) => {
+        $crate::__parse_ensure!(type $stack $bail ($($fuel)*) {($($buf)* $and $lifetime $mut) $($parse)*} ($($rest)*) $($rest)*)
     };
 
     (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($and:tt $mut:tt $($dup:tt)*) && mut $($rest:tt)*) => {
         $crate::__parse_ensure!(type $stack $bail ($($fuel)*) {($($buf)* $and $mut) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($and:tt $life:lifetime $($dup:tt)*) && $l:lifetime $($rest:tt)*) => {
-        $crate::__parse_ensure!(type $stack $bail ($($fuel)*) {($($buf)* $and $life) $($parse)*} ($($rest)*) $($rest)*)
+    (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($and:tt $lifetime:tt $($dup:tt)*) && $l:lifetime $($rest:tt)*) => {
+        $crate::__parse_ensure!(type $stack $bail ($($fuel)*) {($($buf)* $and $lifetime) $($parse)*} ($($rest)*) $($rest)*)
     };
 
     (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($and:tt $($dup:tt)*) && $($rest:tt)*) => {
         $crate::__parse_ensure!(type $stack $bail ($($fuel)*) {($($buf)* $and) $($parse)*} ($($rest)*) $($rest)*)
     };
 
+    (type $stack:tt ($($bail:tt)*) (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt unsafe extern - $($rest:tt)*) => {
+        $crate::__fallback_ensure!($($bail)*)
+    };
+
     (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($unsafe:tt $(extern $($abi:literal)?)? fn $($dup:tt)*) unsafe $($rest:tt)*) => {
         $crate::__parse_ensure!(type $stack $bail ($($fuel)*) {($($buf)* $unsafe) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($extern:tt $abi:literal fn $($dup:tt)*) extern $lit:literal $($rest:tt)*) => {
+    (type $stack:tt ($($bail:tt)*) (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt extern - $($rest:tt)*) => {
+        $crate::__fallback_ensure!($($bail)*)
+    };
+
+    (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($extern:tt $abi:tt fn $($dup:tt)*) extern $lit:literal $($rest:tt)*) => {
         $crate::__parse_ensure!(type $stack $bail ($($fuel)*) {($($buf)* $extern $abi) $($parse)*} ($($rest)*) $($rest)*)
     };
 
@@ -420,11 +460,11 @@
 
     // path types
 
-    (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $($dup:tt)*) :: $ident:ident $($rest:tt)*) => {
+    (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $ident:tt $($dup:tt)*) :: $i:ident $($rest:tt)*) => {
         $crate::__parse_ensure!(tpath $stack $bail ($($fuel)*) {($($buf)* $colons $ident) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt $ident:ident $($rest:tt)*) => {
+    (type $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($ident:tt $($dup:tt)*) $i:ident $($rest:tt)*) => {
         $crate::__parse_ensure!(tpath $stack $bail ($($fuel)*) {($($buf)* $ident) $($parse)*} ($($rest)*) $($rest)*)
     };
 
@@ -436,27 +476,35 @@
         $crate::__parse_ensure!(generic (tpath $stack) $bail ($($fuel)*) {($($buf)* $langle) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (tpath $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt << $($rest:tt)*) => {
-        $crate::__parse_ensure!(generic (tpath $stack) $bail ($($fuel)*) {($($buf)* <) $($parse)*} (< $($rest)*) < $($rest)*)
+    (tpath $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($langle:tt $($dup:tt)*) << $($rest:tt)*) => {
+        $crate::__parse_ensure!(type (qpath (tpath (arglist (tpath $stack)))) $bail ($($fuel)*) {($($buf)* $langle) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (tpath $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt <- $($rest:tt)*) => {
-        $crate::__parse_ensure!(generic (tpath $stack) $bail ($($fuel)*) {($($buf)* <) $($parse)*} (- $($rest)*) - $($rest)*)
+    (tpath $stack:tt ($($bail:tt)*) (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt <- - $($rest:tt)*) => {
+        $crate::__fallback_ensure!($($bail)*)
+    };
+
+    (tpath $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($larrow:tt $($dup:tt)*) <- $lit:literal $($rest:tt)*) => {
+        $crate::__parse_ensure!(generic (tpath $stack) $bail ($($fuel)*) {($($buf)* $larrow) $($parse)*} ($($dup)*) $($dup)*)
     };
 
     (tpath $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $langle:tt $($dup:tt)*) :: < $($rest:tt)*) => {
         $crate::__parse_ensure!(generic (tpath $stack) $bail ($($fuel)*) {($($buf)* $colons $langle) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (tpath $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $($dup:tt)*) :: << $($rest:tt)*) => {
-        $crate::__parse_ensure!(generic (tpath $stack) $bail ($($fuel)*) {($($buf)* $colons <) $($parse)*} (< $($rest)*) < $($rest)*)
+    (tpath $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $langle:tt $($dup:tt)*) :: << $($rest:tt)*) => {
+        $crate::__parse_ensure!(type (qpath (tpath (arglist (tpath $stack)))) $bail ($($fuel)*) {($($buf)* $colons $langle) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (tpath $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $($dup:tt)*) :: <- $($rest:tt)*) => {
-        $crate::__parse_ensure!(generic (tpath $stack) $bail ($($fuel)*) {($($buf)* $colons <) $($parse)*} (- $($rest)*) - $($rest)*)
+    (tpath $stack:tt ($($bail:tt)*) (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt :: <- - $($rest:tt)*) => {
+        $crate::__fallback_ensure!($($bail)*)
     };
 
-    (tpath $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $($dup:tt)*) :: $ident:ident $($rest:tt)*) => {
+    (tpath $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $larrow:tt $($dup:tt)*) :: <- $lit:literal $($rest:tt)*) => {
+        $crate::__parse_ensure!(generic (tpath $stack) $bail ($($fuel)*) {($($buf)* $colons $larrow) $($parse)*} ($($dup)*) $($dup)*)
+    };
+
+    (tpath $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $ident:tt $($dup:tt)*) :: $i:ident $($rest:tt)*) => {
         $crate::__parse_ensure!(tpath $stack $bail ($($fuel)*) {($($buf)* $colons $ident) $($parse)*} ($($rest)*) $($rest)*)
     };
 
@@ -494,7 +542,11 @@
 
     // qualified paths
 
-    (qpath ($pop:ident $stack:tt) $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($rangle:tt $colons:tt $($dup:tt)*) > :: $ident:ident $($rest:tt)*) => {
+    (qpath (split ($pop:ident $stack:tt)) $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($rangle:tt $colons:tt $ident:tt $($dup:tt)*) >> :: $i:ident $($rest:tt)*) => {
+        $crate::__parse_ensure!($pop $stack $bail ($($fuel)*) {($($buf)* $rangle $colons $ident) $($parse)*} ($($rest)*) $($rest)*)
+    };
+
+    (qpath ($pop:ident $stack:tt) $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($rangle:tt $colons:tt $ident:tt $($dup:tt)*) > :: $i:ident $($rest:tt)*) => {
         $crate::__parse_ensure!($pop $stack $bail ($($fuel)*) {($($buf)* $rangle $colons $ident) $($parse)*} ($($rest)*) $($rest)*)
     };
 
@@ -504,41 +556,61 @@
 
     // trait objects
 
-    (object (arglist $stack:tt) $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($plus:tt $colons:tt $($dup:tt)*) + :: $ident:ident $($rest:tt)*) => {
+    (object (arglist $stack:tt) $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($plus:tt $colons:tt $ident:tt $($dup:tt)*) + :: $i:ident $($rest:tt)*) => {
         $crate::__parse_ensure!(tpath (arglist $stack) $bail ($($fuel)*) {($($buf)* $plus $colons $ident) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (object (arglist $stack:tt) $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($plus:tt $($dup:tt)*) + $ident:ident $($rest:tt)*) => {
+    (object (arglist $stack:tt) $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($plus:tt $ident:tt $($dup:tt)*) + $i:ident $($rest:tt)*) => {
         $crate::__parse_ensure!(tpath (arglist $stack) $bail ($($fuel)*) {($($buf)* $plus $ident) $($parse)*} ($($rest)*) $($rest)*)
     };
 
+    (object (split ($pop:ident $stack:tt)) $bail:tt (~$($fuel:tt)*) $parse:tt $dup:tt $($rest:tt)*) => {
+        $crate::__parse_ensure!($pop (split $stack) $bail ($($fuel)*) $parse $dup $($rest)*)
+    };
+
     (object ($pop:ident $stack:tt) $bail:tt (~$($fuel:tt)*) $parse:tt $dup:tt $($rest:tt)*) => {
         $crate::__parse_ensure!($pop $stack $bail ($($fuel)*) $parse $dup $($rest)*)
     };
 
     // angle bracketed generic arguments
 
+    (generic (split ($pop:ident $stack:tt)) $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($rangle:tt $($dup:tt)*) >> $($rest:tt)*) => {
+        $crate::__parse_ensure!($pop $stack $bail ($($fuel)*) {($($buf)* $rangle) $($parse)*} ($($rest)*) $($rest)*)
+    };
+
     (generic ($pop:ident $stack:tt) $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($rangle:tt $($dup:tt)*) > $($rest:tt)*) => {
         $crate::__parse_ensure!($pop $stack $bail ($($fuel)*) {($($buf)* $rangle) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (generic ($pop:ident $stack:tt) $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt >> $($rest:tt)*) => {
-        $crate::__parse_ensure!($pop $stack $bail ($($fuel)*) {($($buf)* >) $($parse)*} (> $($rest)*) > $($rest)*)
+    (generic ($pop:ident $stack:tt) $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($rangle:tt $($dup:tt)*) >> $($rest:tt)*) => {
+        $crate::__parse_ensure!($pop (split $stack) $bail ($($fuel)*) {($($buf)*) $($parse)*} ($rangle $($rest)*) $rangle $($rest)*)
     };
 
-    (generic $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt $lit:literal $($rest:tt)*) => {
-        $crate::__parse_ensure!(arglist $stack $bail ($($fuel)*) {($($buf)* $lit) $($parse)*} ($($rest)*) $($rest)*)
+    (generic $stack:tt ($($bail:tt)*) (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt - - $($rest:tt)*) => {
+        $crate::__fallback_ensure!($($bail)*)
+    };
+
+    (generic $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($neg:tt $($dup:tt)*) - $lit:literal $($rest:tt)*) => {
+        $crate::__parse_ensure!(generic $stack $bail ($($fuel)*) {($($buf)* $neg) $($parse)*} ($($dup)*) $($dup)*)
+    };
+
+    (generic $stack:tt ($($bail:tt)*) (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt - $($rest:tt)*) => {
+        $crate::__fallback_ensure!($($bail)*)
+    };
+
+    (generic $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($literal:tt $($dup:tt)*) $lit:literal $($rest:tt)*) => {
+        $crate::__parse_ensure!(arglist $stack $bail ($($fuel)*) {($($buf)* $literal) $($parse)*} ($($rest)*) $($rest)*)
     };
 
     (generic $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($brace:tt $($dup:tt)*) {$($block:tt)*} $($rest:tt)*) => {
         $crate::__parse_ensure!(arglist $stack $bail ($($fuel)*) {($($buf)* $brace) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (generic $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt $life:lifetime $($rest:tt)*) => {
-        $crate::__parse_ensure!(arglist $stack $bail ($($fuel)*) {($($buf)* $life) $($parse)*} ($($rest)*) $($rest)*)
+    (generic $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($lifetime:tt $($dup:tt)*) $l:lifetime $($rest:tt)*) => {
+        $crate::__parse_ensure!(arglist $stack $bail ($($fuel)*) {($($buf)* $lifetime) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (generic $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($assoc:ident $eq:tt $($dup:tt)*) $ident:ident = $($rest:tt)*) => {
+    (generic $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($assoc:tt $eq:tt $($dup:tt)*) $ident:ident = $($rest:tt)*) => {
         $crate::__parse_ensure!(type (arglist $stack) $bail ($($fuel)*) {($($buf)* $assoc $eq) $($parse)*} ($($rest)*) $($rest)*)
     };
 
@@ -550,12 +622,16 @@
         $crate::__parse_ensure!(generic $stack $bail ($($fuel)*) {($($buf)* $comma) $($parse)*} ($($rest)*) $($rest)*)
     };
 
+    (arglist (split ($pop:ident $stack:tt)) $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($rangle:tt $($dup:tt)*) >> $($rest:tt)*) => {
+        $crate::__parse_ensure!($pop $stack $bail ($($fuel)*) {($($buf)*) $rangle $($parse)*} ($($rest)*) $($rest)*)
+    };
+
     (arglist ($pop:ident $stack:tt) $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($rangle:tt $($dup:tt)*) > $($rest:tt)*) => {
         $crate::__parse_ensure!($pop $stack $bail ($($fuel)*) {($($buf)* $rangle) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (arglist ($pop:ident $stack:tt) $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt >> $($rest:tt)*) => {
-        $crate::__parse_ensure!($pop $stack $bail ($($fuel)*) {($($buf)* >) $($parse)*} (> $($rest)*) > $($rest)*)
+    (arglist ($pop:ident $stack:tt) $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($rangle:tt $($dup:tt)*) >> $($rest:tt)*) => {
+        $crate::__parse_ensure!($pop (split $stack) $bail ($($fuel)*) {($($buf)*) $($parse)*} ($rangle $($rest)*) $rangle $($rest)*)
     };
 
     // patterns
@@ -584,8 +660,20 @@
         $crate::__parse_ensure!(pat $stack $bail ($($fuel)*) {($($buf)* $at) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (pat $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt $lit:literal $($rest:tt)*) => {
-        $crate::__parse_ensure!(pat $stack $bail ($($fuel)*) {($($buf)* $lit) $($parse)*} ($($rest)*) $($rest)*)
+    (pat $stack:tt ($($bail:tt)*) (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt - - $($rest:tt)*) => {
+        $crate::__fallback_ensure!($($bail)*)
+    };
+
+    (pat $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($neg:tt $($dup:tt)*) - $lit:literal $($rest:tt)*) => {
+        $crate::__parse_ensure!(pat $stack $bail ($($fuel)*) {($($buf)* $neg) $($parse)*} ($($dup)*) $($dup)*)
+    };
+
+    (pat $stack:tt ($($bail:tt)*) (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt - $($rest:tt)*) => {
+        $crate::__fallback_ensure!($($bail)*)
+    };
+
+    (pat $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($literal:tt $($dup:tt)*) $lit:literal $($rest:tt)*) => {
+        $crate::__parse_ensure!(pat $stack $bail ($($fuel)*) {($($buf)* $literal) $($parse)*} ($($rest)*) $($rest)*)
     };
 
     (pat $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($range:tt $($dup:tt)*) .. $($rest:tt)*) => {
@@ -620,11 +708,11 @@
         $crate::__parse_ensure!(pat $stack $bail ($($fuel)*) {($($buf)* $wild) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (pat $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $($dup:tt)*) :: $ident:ident $($rest:tt)*) => {
+    (pat $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($colons:tt $ident:tt $($dup:tt)*) :: $i:ident $($rest:tt)*) => {
         $crate::__parse_ensure!(epath (pat $stack) $bail ($($fuel)*) {($($buf)* $colons $ident) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    (pat $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt $ident:ident $($rest:tt)*) => {
+    (pat $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($ident:tt $($dup:tt)*) $i:ident $($rest:tt)*) => {
         $crate::__parse_ensure!(epath (pat $stack) $bail ($($fuel)*) {($($buf)* $ident) $($parse)*} ($($rest)*) $($rest)*)
     };
 
@@ -632,48 +720,6 @@
         $crate::__parse_ensure!(type (qpath (epath (pat $stack))) $bail ($($fuel)*) {($($buf)* $langle) $($parse)*} ($($rest)*) $($rest)*)
     };
 
-    // high precedence binary operators
-
-    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($add:tt $($dup:tt)*) + $($rest:tt)*) => {
-        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $add) $($parse)*} ($($rest)*) $($rest)*)
-    };
-
-    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($sub:tt $($dup:tt)*) - $($rest:tt)*) => {
-        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $sub) $($parse)*} ($($rest)*) $($rest)*)
-    };
-
-    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($mul:tt $($dup:tt)*) * $($rest:tt)*) => {
-        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $mul) $($parse)*} ($($rest)*) $($rest)*)
-    };
-
-    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($div:tt $($dup:tt)*) / $($rest:tt)*) => {
-        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $div) $($parse)*} ($($rest)*) $($rest)*)
-    };
-
-    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($rem:tt $($dup:tt)*) % $($rest:tt)*) => {
-        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $rem) $($parse)*} ($($rest)*) $($rest)*)
-    };
-
-    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($bitxor:tt $($dup:tt)*) ^ $($rest:tt)*) => {
-        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $bitxor) $($parse)*} ($($rest)*) $($rest)*)
-    };
-
-    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($bitand:tt $($dup:tt)*) & $($rest:tt)*) => {
-        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $bitand) $($parse)*} ($($rest)*) $($rest)*)
-    };
-
-    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($bitor:tt $($dup:tt)*) | $($rest:tt)*) => {
-        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $bitor) $($parse)*} ($($rest)*) $($rest)*)
-    };
-
-    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($shl:tt $($dup:tt)*) << $($rest:tt)*) => {
-        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $shl) $($parse)*} ($($rest)*) $($rest)*)
-    };
-
-    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($shr:tt $($dup:tt)*) >> $($rest:tt)*) => {
-        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $shr) $($parse)*} ($($rest)*) $($rest)*)
-    };
-
     // comparison binary operators
 
     (atom () $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($eq:tt $($dup:tt)*) == $($rest:tt)*) => {
@@ -716,14 +762,64 @@
         $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $ge) $($parse)*} ($($rest)*) $($rest)*)
     };
 
+    (atom (split ()) $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} $dup:tt >> $($rest:tt)*) => {
+        $crate::__parse_ensure!(0 () $bail ($($fuel)*) {() $($parse)* ($($buf)* > ) > } ($($rest)*) $($rest)*)
+    };
+
     (atom () $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($gt:tt $($dup:tt)*) > $($rest:tt)*) => {
         $crate::__parse_ensure!(0 () $bail ($($fuel)*) {() $($parse)* ($($buf)*) $gt} ($($rest)*) $($rest)*)
     };
 
+    (atom (split $stack:tt) $bail:tt (~$($fuel:tt)*) {($($buf:tt)+) $($parse:tt)*} ($rangle:tt $($dup:tt)*) >> $($rest:tt)*) => {
+        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $rangle) $($parse)*} ($($rest)*) $($rest)*)
+    };
+
     (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)+) $($parse:tt)*} ($gt:tt $($dup:tt)*) > $($rest:tt)*) => {
         $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $gt) $($parse)*} ($($rest)*) $($rest)*)
     };
 
+    // high precedence binary operators
+
+    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($add:tt $($dup:tt)*) + $($rest:tt)*) => {
+        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $add) $($parse)*} ($($rest)*) $($rest)*)
+    };
+
+    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($sub:tt $($dup:tt)*) - $($rest:tt)*) => {
+        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $sub) $($parse)*} ($($rest)*) $($rest)*)
+    };
+
+    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($mul:tt $($dup:tt)*) * $($rest:tt)*) => {
+        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $mul) $($parse)*} ($($rest)*) $($rest)*)
+    };
+
+    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($div:tt $($dup:tt)*) / $($rest:tt)*) => {
+        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $div) $($parse)*} ($($rest)*) $($rest)*)
+    };
+
+    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($rem:tt $($dup:tt)*) % $($rest:tt)*) => {
+        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $rem) $($parse)*} ($($rest)*) $($rest)*)
+    };
+
+    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($bitxor:tt $($dup:tt)*) ^ $($rest:tt)*) => {
+        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $bitxor) $($parse)*} ($($rest)*) $($rest)*)
+    };
+
+    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($bitand:tt $($dup:tt)*) & $($rest:tt)*) => {
+        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $bitand) $($parse)*} ($($rest)*) $($rest)*)
+    };
+
+    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($bitor:tt $($dup:tt)*) | $($rest:tt)*) => {
+        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $bitor) $($parse)*} ($($rest)*) $($rest)*)
+    };
+
+    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($shl:tt $($dup:tt)*) << $($rest:tt)*) => {
+        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $shl) $($parse)*} ($($rest)*) $($rest)*)
+    };
+
+    (atom $stack:tt $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($shr:tt $($dup:tt)*) >> $($rest:tt)*) => {
+        $crate::__parse_ensure!(0 $stack $bail ($($fuel)*) {($($buf)* $shr) $($parse)*} ($($rest)*) $($rest)*)
+    };
+
     // low precedence binary operators
 
     (atom ($($stack:tt)+) $bail:tt (~$($fuel:tt)*) {($($buf:tt)*) $($parse:tt)*} ($and:tt $($dup:tt)*) && $($rest:tt)*) => {
@@ -815,24 +911,24 @@
 #[macro_export]
 macro_rules! __fallback_ensure {
     ($cond:expr $(,)?) => {
-        if !$cond {
+        if $crate::__private::not($cond) {
             return $crate::__private::Err($crate::Error::msg(
                 $crate::__private::concat!("Condition failed: `", $crate::__private::stringify!($cond), "`")
             ));
         }
     };
     ($cond:expr, $msg:literal $(,)?) => {
-        if !$cond {
+        if $crate::__private::not($cond) {
             return $crate::__private::Err($crate::__anyhow!($msg));
         }
     };
     ($cond:expr, $err:expr $(,)?) => {
-        if !$cond {
+        if $crate::__private::not($cond) {
             return $crate::__private::Err($crate::__anyhow!($err));
         }
     };
     ($cond:expr, $fmt:expr, $($arg:tt)*) => {
-        if !$cond {
+        if $crate::__private::not($cond) {
             return $crate::__private::Err($crate::__anyhow!($fmt, $($arg)*));
         }
     };
diff --git a/crates/anyhow/src/error.rs b/crates/anyhow/src/error.rs
index f24c4a6..cd1f5f5 100644
--- a/crates/anyhow/src/error.rs
+++ b/crates/anyhow/src/error.rs
@@ -1,21 +1,24 @@
 use crate::backtrace::Backtrace;
 use crate::chain::Chain;
-#[cfg(any(feature = "std", anyhow_no_ptr_addr_of))]
+#[cfg(any(feature = "std", not(anyhow_no_core_error), anyhow_no_ptr_addr_of))]
 use crate::ptr::Mut;
 use crate::ptr::{Own, Ref};
 use crate::{Error, StdError};
 use alloc::boxed::Box;
 use core::any::TypeId;
+#[cfg(error_generic_member_access)]
+use core::error::{self, Request};
 use core::fmt::{self, Debug, Display};
 use core::mem::ManuallyDrop;
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
+use core::ops::{Deref, DerefMut};
+#[cfg(not(anyhow_no_core_unwind_safe))]
+use core::panic::{RefUnwindSafe, UnwindSafe};
 #[cfg(not(anyhow_no_ptr_addr_of))]
 use core::ptr;
 use core::ptr::NonNull;
-#[cfg(error_generic_member_access)]
-use std::error::{self, Request};
-
-#[cfg(feature = "std")]
-use core::ops::{Deref, DerefMut};
+#[cfg(all(feature = "std", anyhow_no_core_unwind_safe))]
+use std::panic::{RefUnwindSafe, UnwindSafe};
 
 impl Error {
     /// Create a new error object from any error type.
@@ -25,8 +28,7 @@
     ///
     /// If the error type does not provide a backtrace, a backtrace will be
     /// created here to ensure that a backtrace exists.
-    #[cfg(feature = "std")]
-    #[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
+    #[cfg(any(feature = "std", not(anyhow_no_core_error)))]
     #[cold]
     #[must_use]
     pub fn new<E>(error: E) -> Self
@@ -34,7 +36,7 @@
         E: StdError + Send + Sync + 'static,
     {
         let backtrace = backtrace_if_absent!(&error);
-        Error::from_std(error, backtrace)
+        Error::construct_from_std(error, backtrace)
     }
 
     /// Create a new error object from a printable error message.
@@ -80,12 +82,73 @@
     where
         M: Display + Debug + Send + Sync + 'static,
     {
-        Error::from_adhoc(message, backtrace!())
+        Error::construct_from_adhoc(message, backtrace!())
     }
 
-    #[cfg(feature = "std")]
+    /// Construct an error object from a type-erased standard library error.
+    ///
+    /// This is mostly useful for interop with other error libraries.
+    ///
+    /// # Example
+    ///
+    /// Here is a skeleton of a library that provides its own error abstraction.
+    /// The pair of `From` impls provide bidirectional support for `?`
+    /// conversion between `Report` and `anyhow::Error`.
+    ///
+    /// ```
+    /// use std::error::Error as StdError;
+    ///
+    /// pub struct Report {/* ... */}
+    ///
+    /// impl<E> From<E> for Report
+    /// where
+    ///     E: Into<anyhow::Error>,
+    ///     Result<(), E>: anyhow::Context<(), E>,
+    /// {
+    ///     fn from(error: E) -> Self {
+    ///         let anyhow_error: anyhow::Error = error.into();
+    ///         let boxed_error: Box<dyn StdError + Send + Sync + 'static> = anyhow_error.into();
+    ///         Report::from_boxed(boxed_error)
+    ///     }
+    /// }
+    ///
+    /// impl From<Report> for anyhow::Error {
+    ///     fn from(report: Report) -> Self {
+    ///         let boxed_error: Box<dyn StdError + Send + Sync + 'static> = report.into_boxed();
+    ///         anyhow::Error::from_boxed(boxed_error)
+    ///     }
+    /// }
+    ///
+    /// impl Report {
+    ///     fn from_boxed(boxed_error: Box<dyn StdError + Send + Sync + 'static>) -> Self {
+    ///         todo!()
+    ///     }
+    ///     fn into_boxed(self) -> Box<dyn StdError + Send + Sync + 'static> {
+    ///         todo!()
+    ///     }
+    /// }
+    ///
+    /// // Example usage: can use `?` in both directions.
+    /// fn a() -> anyhow::Result<()> {
+    ///     b()?;
+    ///     Ok(())
+    /// }
+    /// fn b() -> Result<(), Report> {
+    ///     a()?;
+    ///     Ok(())
+    /// }
+    /// ```
+    #[cfg(any(feature = "std", not(anyhow_no_core_error)))]
     #[cold]
-    pub(crate) fn from_std<E>(error: E, backtrace: Option<Backtrace>) -> Self
+    #[must_use]
+    pub fn from_boxed(boxed_error: Box<dyn StdError + Send + Sync + 'static>) -> Self {
+        let backtrace = backtrace_if_absent!(&*boxed_error);
+        Error::construct_from_boxed(boxed_error, backtrace)
+    }
+
+    #[cfg(any(feature = "std", not(anyhow_no_core_error)))]
+    #[cold]
+    pub(crate) fn construct_from_std<E>(error: E, backtrace: Option<Backtrace>) -> Self
     where
         E: StdError + Send + Sync + 'static,
     {
@@ -111,7 +174,7 @@
     }
 
     #[cold]
-    pub(crate) fn from_adhoc<M>(message: M, backtrace: Option<Backtrace>) -> Self
+    pub(crate) fn construct_from_adhoc<M>(message: M, backtrace: Option<Backtrace>) -> Self
     where
         M: Display + Debug + Send + Sync + 'static,
     {
@@ -120,7 +183,7 @@
         let vtable = &ErrorVTable {
             object_drop: object_drop::<MessageError<M>>,
             object_ref: object_ref::<MessageError<M>>,
-            #[cfg(all(feature = "std", anyhow_no_ptr_addr_of))]
+            #[cfg(all(any(feature = "std", not(anyhow_no_core_error)), anyhow_no_ptr_addr_of))]
             object_mut: object_mut::<MessageError<M>>,
             object_boxed: object_boxed::<MessageError<M>>,
             object_downcast: object_downcast::<M>,
@@ -140,7 +203,7 @@
     }
 
     #[cold]
-    pub(crate) fn from_display<M>(message: M, backtrace: Option<Backtrace>) -> Self
+    pub(crate) fn construct_from_display<M>(message: M, backtrace: Option<Backtrace>) -> Self
     where
         M: Display + Send + Sync + 'static,
     {
@@ -149,7 +212,7 @@
         let vtable = &ErrorVTable {
             object_drop: object_drop::<DisplayError<M>>,
             object_ref: object_ref::<DisplayError<M>>,
-            #[cfg(all(feature = "std", anyhow_no_ptr_addr_of))]
+            #[cfg(all(any(feature = "std", not(anyhow_no_core_error)), anyhow_no_ptr_addr_of))]
             object_mut: object_mut::<DisplayError<M>>,
             object_boxed: object_boxed::<DisplayError<M>>,
             object_downcast: object_downcast::<M>,
@@ -168,9 +231,13 @@
         unsafe { Error::construct(error, vtable, backtrace) }
     }
 
-    #[cfg(feature = "std")]
+    #[cfg(any(feature = "std", not(anyhow_no_core_error)))]
     #[cold]
-    pub(crate) fn from_context<C, E>(context: C, error: E, backtrace: Option<Backtrace>) -> Self
+    pub(crate) fn construct_from_context<C, E>(
+        context: C,
+        error: E,
+        backtrace: Option<Backtrace>,
+    ) -> Self
     where
         C: Display + Send + Sync + 'static,
         E: StdError + Send + Sync + 'static,
@@ -198,9 +265,9 @@
         unsafe { Error::construct(error, vtable, backtrace) }
     }
 
-    #[cfg(feature = "std")]
+    #[cfg(any(feature = "std", not(anyhow_no_core_error)))]
     #[cold]
-    pub(crate) fn from_boxed(
+    pub(crate) fn construct_from_boxed(
         error: Box<dyn StdError + Send + Sync>,
         backtrace: Option<Backtrace>,
     ) -> Self {
@@ -325,7 +392,7 @@
         let vtable = &ErrorVTable {
             object_drop: object_drop::<ContextError<C, Error>>,
             object_ref: object_ref::<ContextError<C, Error>>,
-            #[cfg(all(feature = "std", anyhow_no_ptr_addr_of))]
+            #[cfg(all(any(feature = "std", not(anyhow_no_core_error)), anyhow_no_ptr_addr_of))]
             object_mut: object_mut::<ContextError<C, Error>>,
             object_boxed: object_boxed::<ContextError<C, Error>>,
             object_downcast: context_chain_downcast::<C>,
@@ -399,8 +466,7 @@
     ///     None
     /// }
     /// ```
-    #[cfg(feature = "std")]
-    #[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
+    #[cfg(any(feature = "std", not(anyhow_no_core_error)))]
     #[cold]
     pub fn chain(&self) -> Chain {
         unsafe { ErrorImpl::chain(self.inner.by_ref()) }
@@ -411,8 +477,7 @@
     ///
     /// The root cause is the last error in the iterator produced by
     /// [`chain()`][Error::chain].
-    #[cfg(feature = "std")]
-    #[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
+    #[cfg(any(feature = "std", not(anyhow_no_core_error)))]
     pub fn root_cause(&self) -> &(dyn StdError + 'static) {
         self.chain().last().unwrap()
     }
@@ -554,8 +619,7 @@
     }
 }
 
-#[cfg(feature = "std")]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 impl<E> From<E> for Error
 where
     E: StdError + Send + Sync + 'static,
@@ -563,12 +627,11 @@
     #[cold]
     fn from(error: E) -> Self {
         let backtrace = backtrace_if_absent!(&error);
-        Error::from_std(error, backtrace)
+        Error::construct_from_std(error, backtrace)
     }
 }
 
-#[cfg(feature = "std")]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 impl Deref for Error {
     type Target = dyn StdError + Send + Sync + 'static;
 
@@ -577,8 +640,7 @@
     }
 }
 
-#[cfg(feature = "std")]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 impl DerefMut for Error {
     fn deref_mut(&mut self) -> &mut Self::Target {
         unsafe { ErrorImpl::error_mut(self.inner.by_mut()) }
@@ -609,7 +671,7 @@
 struct ErrorVTable {
     object_drop: unsafe fn(Own<ErrorImpl>),
     object_ref: unsafe fn(Ref<ErrorImpl>) -> Ref<dyn StdError + Send + Sync + 'static>,
-    #[cfg(all(feature = "std", anyhow_no_ptr_addr_of))]
+    #[cfg(all(any(feature = "std", not(anyhow_no_core_error)), anyhow_no_ptr_addr_of))]
     object_mut: unsafe fn(Mut<ErrorImpl>) -> &mut (dyn StdError + Send + Sync + 'static),
     object_boxed: unsafe fn(Own<ErrorImpl>) -> Box<dyn StdError + Send + Sync + 'static>,
     object_downcast: unsafe fn(Ref<ErrorImpl>, TypeId) -> Option<Ref<()>>,
@@ -661,7 +723,7 @@
 
 // Safety: requires layout of *e to match ErrorImpl<E>, and for `e` to be derived
 // from a `&mut`
-#[cfg(all(feature = "std", anyhow_no_ptr_addr_of))]
+#[cfg(all(any(feature = "std", not(anyhow_no_core_error)), anyhow_no_ptr_addr_of))]
 unsafe fn object_mut<E>(e: Mut<ErrorImpl>) -> &mut (dyn StdError + Send + Sync + 'static)
 where
     E: StdError + Send + Sync + 'static,
@@ -734,7 +796,7 @@
 }
 
 // Safety: requires layout of *e to match ErrorImpl<ContextError<C, E>>.
-#[cfg(feature = "std")]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 unsafe fn context_downcast<C, E>(e: Ref<ErrorImpl>, target: TypeId) -> Option<Ref<()>>
 where
     C: 'static,
@@ -774,7 +836,7 @@
 }
 
 // Safety: requires layout of *e to match ErrorImpl<ContextError<C, E>>.
-#[cfg(feature = "std")]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 unsafe fn context_drop_rest<C, E>(e: Own<ErrorImpl>, target: TypeId)
 where
     C: 'static,
@@ -906,7 +968,7 @@
         unsafe { (vtable(this.ptr).object_ref)(this).deref() }
     }
 
-    #[cfg(feature = "std")]
+    #[cfg(any(feature = "std", not(anyhow_no_core_error)))]
     pub(crate) unsafe fn error_mut(this: Mut<Self>) -> &mut (dyn StdError + Send + Sync + 'static) {
         // Use vtable to attach E's native StdError vtable for the right
         // original type E.
@@ -1009,16 +1071,22 @@
     }
 }
 
-#[cfg(feature = "std")]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 impl AsRef<dyn StdError + Send + Sync> for Error {
     fn as_ref(&self) -> &(dyn StdError + Send + Sync + 'static) {
         &**self
     }
 }
 
-#[cfg(feature = "std")]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 impl AsRef<dyn StdError> for Error {
     fn as_ref(&self) -> &(dyn StdError + 'static) {
         &**self
     }
 }
+
+#[cfg(any(feature = "std", not(anyhow_no_core_unwind_safe)))]
+impl UnwindSafe for Error {}
+
+#[cfg(any(feature = "std", not(anyhow_no_core_unwind_safe)))]
+impl RefUnwindSafe for Error {}
diff --git a/crates/anyhow/src/fmt.rs b/crates/anyhow/src/fmt.rs
index a99649b..85c84a9 100644
--- a/crates/anyhow/src/fmt.rs
+++ b/crates/anyhow/src/fmt.rs
@@ -43,6 +43,7 @@
         #[cfg(any(std_backtrace, feature = "backtrace"))]
         {
             use crate::backtrace::BacktraceStatus;
+            use alloc::string::ToString;
 
             let backtrace = unsafe { Self::backtrace(this) };
             if let BacktraceStatus::Captured = backtrace.status() {
@@ -102,6 +103,7 @@
 #[cfg(test)]
 mod tests {
     use super::*;
+    use alloc::string::String;
 
     #[test]
     fn one_digit() {
diff --git a/crates/anyhow/src/kind.rs b/crates/anyhow/src/kind.rs
index 21d76aa..a9f40c3 100644
--- a/crates/anyhow/src/kind.rs
+++ b/crates/anyhow/src/kind.rs
@@ -47,8 +47,10 @@
 use crate::Error;
 use core::fmt::{Debug, Display};
 
-#[cfg(feature = "std")]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 use crate::StdError;
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
+use alloc::boxed::Box;
 
 pub struct Adhoc;
 
@@ -68,7 +70,7 @@
     where
         M: Display + Debug + Send + Sync + 'static,
     {
-        Error::from_adhoc(message, backtrace!())
+        Error::construct_from_adhoc(message, backtrace!())
     }
 }
 
@@ -94,10 +96,10 @@
     }
 }
 
-#[cfg(feature = "std")]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 pub struct Boxed;
 
-#[cfg(feature = "std")]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 #[doc(hidden)]
 pub trait BoxedKind: Sized {
     #[inline]
@@ -106,14 +108,14 @@
     }
 }
 
-#[cfg(feature = "std")]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 impl BoxedKind for Box<dyn StdError + Send + Sync> {}
 
-#[cfg(feature = "std")]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 impl Boxed {
     #[cold]
     pub fn new(self, error: Box<dyn StdError + Send + Sync>) -> Error {
         let backtrace = backtrace_if_absent!(&*error);
-        Error::from_boxed(error, backtrace)
+        Error::construct_from_boxed(error, backtrace)
     }
 }
diff --git a/crates/anyhow/src/lib.rs b/crates/anyhow/src/lib.rs
index 490a075..947ed20 100644
--- a/crates/anyhow/src/lib.rs
+++ b/crates/anyhow/src/lib.rs
@@ -17,7 +17,7 @@
 //!   the return type of any fallible function.
 //!
 //!   Within the function, use `?` to easily propagate any error that implements
-//!   the `std::error::Error` trait.
+//!   the [`std::error::Error`] trait.
 //!
 //!   ```
 //!   # pub trait Deserialize {}
@@ -192,8 +192,8 @@
 //!
 //! # No-std support
 //!
-//! In no_std mode, the same API is almost all available and works the same way.
-//! To depend on Anyhow in no_std mode, disable our default enabled "std"
+//! In no_std mode, almost all of the same API is available and works the same
+//! way. To depend on Anyhow in no_std mode, disable our default enabled "std"
 //! feature in Cargo.toml. A global allocator is required.
 //!
 //! ```toml
@@ -201,15 +201,14 @@
 //! anyhow = { version = "1.0", default-features = false }
 //! ```
 //!
-//! Since the `?`-based error conversions would normally rely on the
-//! `std::error::Error` trait which is only available through std, no_std mode
-//! will require an explicit `.map_err(Error::msg)` when working with a
-//! non-Anyhow error type inside a function that returns Anyhow's error type.
+//! With versions of Rust older than 1.81, no_std mode may require an additional
+//! `.map_err(Error::msg)` when working with a non-Anyhow error type inside a
+//! function that returns Anyhow's error type, as the trait that `?`-based error
+//! conversions are defined by is only available in std in those old versions.
 
-#![doc(html_root_url = "https://docs.rs/anyhow/1.0.79")]
+#![doc(html_root_url = "https://docs.rs/anyhow/1.0.95")]
 #![cfg_attr(error_generic_member_access, feature(error_generic_member_access))]
-#![cfg_attr(doc_cfg, feature(doc_cfg))]
-#![cfg_attr(not(feature = "std"), no_std)]
+#![no_std]
 #![deny(dead_code, unused_imports, unused_mut)]
 #![cfg_attr(
     not(anyhow_no_unsafe_op_in_unsafe_fn_lint),
@@ -221,12 +220,14 @@
     clippy::enum_glob_use,
     clippy::explicit_auto_deref,
     clippy::extra_unused_type_parameters,
+    clippy::incompatible_msrv,
     clippy::let_underscore_untyped,
     clippy::missing_errors_doc,
     clippy::missing_panics_doc,
     clippy::module_name_repetitions,
     clippy::must_use_candidate,
     clippy::needless_doctest_main,
+    clippy::needless_lifetimes,
     clippy::new_ret_no_self,
     clippy::redundant_else,
     clippy::return_self_not_must_use,
@@ -246,6 +247,9 @@
 
 extern crate alloc;
 
+#[cfg(feature = "std")]
+extern crate std;
+
 #[macro_use]
 mod backtrace;
 mod chain;
@@ -262,13 +266,16 @@
 use crate::ptr::Own;
 use core::fmt::Display;
 
-#[cfg(not(feature = "std"))]
+#[cfg(all(not(feature = "std"), anyhow_no_core_error))]
 use core::fmt::Debug;
 
 #[cfg(feature = "std")]
 use std::error::Error as StdError;
 
-#[cfg(not(feature = "std"))]
+#[cfg(not(any(feature = "std", anyhow_no_core_error)))]
+use core::error::Error as StdError;
+
+#[cfg(all(not(feature = "std"), anyhow_no_core_error))]
 trait StdError: Debug + Display {
     fn source(&self) -> Option<&(dyn StdError + 'static)> {
         None
@@ -379,7 +386,7 @@
 ///     # Ok(())
 /// }
 /// ```
-#[cfg_attr(not(doc), repr(transparent))]
+#[repr(transparent)]
 pub struct Error {
     inner: Own<ErrorImpl>,
 }
@@ -403,8 +410,7 @@
 ///     None
 /// }
 /// ```
-#[cfg(feature = "std")]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 #[derive(Clone)]
 pub struct Chain<'a> {
     state: crate::chain::ChainState<'a>,
@@ -621,11 +627,11 @@
         F: FnOnce() -> C;
 }
 
-/// Equivalent to Ok::<_, anyhow::Error>(value).
+/// Equivalent to `Ok::<_, anyhow::Error>(value)`.
 ///
-/// This simplifies creation of an anyhow::Result in places where type inference
-/// cannot deduce the `E` type of the result &mdash; without needing to write
-/// `Ok::<_, anyhow::Error>(value)`.
+/// This simplifies creation of an `anyhow::Result` in places where type
+/// inference cannot deduce the `E` type of the result &mdash; without needing
+/// to write`Ok::<_, anyhow::Error>(value)`.
 ///
 /// One might think that `anyhow::Result::Ok(value)` would work in such cases
 /// but it does not.
@@ -640,13 +646,14 @@
 ///    |         consider giving this pattern the explicit type `std::result::Result<i32, E>`, where the type parameter `E` is specified
 /// ```
 #[allow(non_snake_case)]
-pub fn Ok<T>(t: T) -> Result<T> {
-    Result::Ok(t)
+pub fn Ok<T>(value: T) -> Result<T> {
+    Result::Ok(value)
 }
 
 // Not public API. Referenced by macro-generated code.
 #[doc(hidden)]
 pub mod __private {
+    use self::not::Bool;
     use crate::Error;
     use alloc::fmt;
     use core::fmt::Arguments;
@@ -665,7 +672,7 @@
         #[doc(hidden)]
         pub use crate::kind::{AdhocKind, TraitKind};
 
-        #[cfg(feature = "std")]
+        #[cfg(any(feature = "std", not(anyhow_no_core_error)))]
         #[doc(hidden)]
         pub use crate::kind::BoxedKind;
     }
@@ -695,4 +702,31 @@
     pub fn must_use(error: Error) -> Error {
         error
     }
+
+    #[doc(hidden)]
+    #[inline]
+    pub fn not(cond: impl Bool) -> bool {
+        cond.not()
+    }
+
+    mod not {
+        #[doc(hidden)]
+        pub trait Bool {
+            fn not(self) -> bool;
+        }
+
+        impl Bool for bool {
+            #[inline]
+            fn not(self) -> bool {
+                !self
+            }
+        }
+
+        impl Bool for &bool {
+            #[inline]
+            fn not(self) -> bool {
+                !*self
+            }
+        }
+    }
 }
diff --git a/crates/anyhow/src/macros.rs b/crates/anyhow/src/macros.rs
index 6dd2274..469b3d8 100644
--- a/crates/anyhow/src/macros.rs
+++ b/crates/anyhow/src/macros.rs
@@ -1,9 +1,10 @@
 /// Return early with an error.
 ///
-/// This macro is equivalent to `return Err(`[`anyhow!($args...)`][anyhow!]`)`.
+/// This macro is equivalent to
+/// <code>return Err([anyhow!($args\...)][anyhow!])</code>.
 ///
 /// The surrounding function's or closure's return value is required to be
-/// `Result<_,`[`anyhow::Error`][crate::Error]`>`.
+/// <code>Result&lt;_, [anyhow::Error][crate::Error]&gt;</code>.
 ///
 /// [anyhow!]: crate::anyhow
 ///
@@ -65,98 +66,108 @@
     };
 }
 
-/// Return early with an error if a condition is not satisfied.
-///
-/// This macro is equivalent to `if !$cond { return
-/// Err(`[`anyhow!($args...)`][anyhow!]`); }`.
-///
-/// The surrounding function's or closure's return value is required to be
-/// `Result<_,`[`anyhow::Error`][crate::Error]`>`.
-///
-/// Analogously to `assert!`, `ensure!` takes a condition and exits the function
-/// if the condition fails. Unlike `assert!`, `ensure!` returns an `Error`
-/// rather than panicking.
-///
-/// [anyhow!]: crate::anyhow
-///
-/// # Example
-///
-/// ```
-/// # use anyhow::{ensure, Result};
-/// #
-/// # fn main() -> Result<()> {
-/// #     let user = 0;
-/// #
-/// ensure!(user == 0, "only user 0 is allowed");
-/// #     Ok(())
-/// # }
-/// ```
-///
-/// ```
-/// # use anyhow::{ensure, Result};
-/// # use thiserror::Error;
-/// #
-/// # const MAX_DEPTH: usize = 1;
-/// #
-/// #[derive(Error, Debug)]
-/// enum ScienceError {
-///     #[error("recursion limit exceeded")]
-///     RecursionLimitExceeded,
-///     # #[error("...")]
-///     # More = (stringify! {
-///     ...
-///     # }, 1).1,
-/// }
-///
-/// # fn main() -> Result<()> {
-/// #     let depth = 0;
-/// #
-/// ensure!(depth <= MAX_DEPTH, ScienceError::RecursionLimitExceeded);
-/// #     Ok(())
-/// # }
-/// ```
-#[cfg(doc)]
-#[macro_export]
-macro_rules! ensure {
-    ($cond:expr $(,)?) => {
-        if !$cond {
-            return $crate::__private::Err($crate::Error::msg(
-                $crate::__private::concat!("Condition failed: `", $crate::__private::stringify!($cond), "`")
-            ));
-        }
-    };
-    ($cond:expr, $msg:literal $(,)?) => {
-        if !$cond {
-            return $crate::__private::Err($crate::__anyhow!($msg));
-        }
-    };
-    ($cond:expr, $err:expr $(,)?) => {
-        if !$cond {
-            return $crate::__private::Err($crate::__anyhow!($err));
-        }
-    };
-    ($cond:expr, $fmt:expr, $($arg:tt)*) => {
-        if !$cond {
-            return $crate::__private::Err($crate::__anyhow!($fmt, $($arg)*));
-        }
+macro_rules! __ensure {
+    ($ensure:item) => {
+        /// Return early with an error if a condition is not satisfied.
+        ///
+        /// This macro is equivalent to
+        /// <code>if !$cond { return Err([anyhow!($args\...)][anyhow!]); }</code>.
+        ///
+        /// The surrounding function's or closure's return value is required to be
+        /// <code>Result&lt;_, [anyhow::Error][crate::Error]&gt;</code>.
+        ///
+        /// Analogously to `assert!`, `ensure!` takes a condition and exits the function
+        /// if the condition fails. Unlike `assert!`, `ensure!` returns an `Error`
+        /// rather than panicking.
+        ///
+        /// [anyhow!]: crate::anyhow
+        ///
+        /// # Example
+        ///
+        /// ```
+        /// # use anyhow::{ensure, Result};
+        /// #
+        /// # fn main() -> Result<()> {
+        /// #     let user = 0;
+        /// #
+        /// ensure!(user == 0, "only user 0 is allowed");
+        /// #     Ok(())
+        /// # }
+        /// ```
+        ///
+        /// ```
+        /// # use anyhow::{ensure, Result};
+        /// # use thiserror::Error;
+        /// #
+        /// # const MAX_DEPTH: usize = 1;
+        /// #
+        /// #[derive(Error, Debug)]
+        /// enum ScienceError {
+        ///     #[error("recursion limit exceeded")]
+        ///     RecursionLimitExceeded,
+        ///     # #[error("...")]
+        ///     # More = (stringify! {
+        ///     ...
+        ///     # }, 1).1,
+        /// }
+        ///
+        /// # fn main() -> Result<()> {
+        /// #     let depth = 0;
+        /// #
+        /// ensure!(depth <= MAX_DEPTH, ScienceError::RecursionLimitExceeded);
+        /// #     Ok(())
+        /// # }
+        /// ```
+        $ensure
     };
 }
 
+#[cfg(doc)]
+__ensure![
+    #[macro_export]
+    macro_rules! ensure {
+        ($cond:expr $(,)?) => {
+            if !$cond {
+                return $crate::__private::Err($crate::Error::msg(
+                    $crate::__private::concat!("Condition failed: `", $crate::__private::stringify!($cond), "`")
+                ));
+            }
+        };
+        ($cond:expr, $msg:literal $(,)?) => {
+            if !$cond {
+                return $crate::__private::Err($crate::__anyhow!($msg));
+            }
+        };
+        ($cond:expr, $err:expr $(,)?) => {
+            if !$cond {
+                return $crate::__private::Err($crate::__anyhow!($err));
+            }
+        };
+        ($cond:expr, $fmt:expr, $($arg:tt)*) => {
+            if !$cond {
+                return $crate::__private::Err($crate::__anyhow!($fmt, $($arg)*));
+            }
+        };
+    }
+];
+
 #[cfg(not(doc))]
-#[macro_export]
-macro_rules! ensure {
-    ($($tt:tt)*) => {
-        $crate::__parse_ensure!(
-            /* state */ 0
-            /* stack */ ()
-            /* bail */ ($($tt)*)
-            /* fuel */ (~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~)
-            /* parse */ {()}
-            /* dup */ ($($tt)*)
-            /* rest */ $($tt)*
-        )
-    };
-}
+__ensure![
+    #[macro_export]
+    macro_rules! ensure {
+        ($($tt:tt)*) => {
+            $crate::__parse_ensure!(
+                /* state */ 0
+                /* stack */ ()
+                /* bail */ ($($tt)*)
+                /* fuel */ (~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~)
+                /* parse */ {()}
+                /* dup */ ($($tt)*)
+                /* rest */ $($tt)*
+            )
+        };
+    }
+];
 
 /// Construct an ad-hoc error from a string or existing non-`anyhow` error
 /// value.
diff --git a/crates/anyhow/src/wrapper.rs b/crates/anyhow/src/wrapper.rs
index 0eb5478..6f46779 100644
--- a/crates/anyhow/src/wrapper.rs
+++ b/crates/anyhow/src/wrapper.rs
@@ -1,8 +1,11 @@
 use crate::StdError;
 use core::fmt::{self, Debug, Display};
 
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
+use alloc::boxed::Box;
+
 #[cfg(error_generic_member_access)]
-use std::error::Request;
+use core::error::Request;
 
 #[repr(transparent)]
 pub struct MessageError<M>(pub M);
@@ -50,25 +53,25 @@
 
 impl<M> StdError for DisplayError<M> where M: Display + 'static {}
 
-#[cfg(feature = "std")]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 #[repr(transparent)]
 pub struct BoxedError(pub Box<dyn StdError + Send + Sync>);
 
-#[cfg(feature = "std")]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 impl Debug for BoxedError {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
         Debug::fmt(&self.0, f)
     }
 }
 
-#[cfg(feature = "std")]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 impl Display for BoxedError {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
         Display::fmt(&self.0, f)
     }
 }
 
-#[cfg(feature = "std")]
+#[cfg(any(feature = "std", not(anyhow_no_core_error)))]
 impl StdError for BoxedError {
     fn source(&self) -> Option<&(dyn StdError + 'static)> {
         self.0.source()
diff --git a/crates/anyhow/tests/compiletest.rs b/crates/anyhow/tests/compiletest.rs
index 7974a62..23a6a06 100644
--- a/crates/anyhow/tests/compiletest.rs
+++ b/crates/anyhow/tests/compiletest.rs
@@ -1,5 +1,5 @@
-#[rustversion::attr(not(nightly), ignore)]
-#[cfg_attr(miri, ignore)]
+#[rustversion::attr(not(nightly), ignore = "requires nightly")]
+#[cfg_attr(miri, ignore = "incompatible with miri")]
 #[test]
 fn ui() {
     let t = trybuild::TestCases::new();
diff --git a/crates/anyhow/tests/test_autotrait.rs b/crates/anyhow/tests/test_autotrait.rs
index 94d7a59..080b3b9 100644
--- a/crates/anyhow/tests/test_autotrait.rs
+++ b/crates/anyhow/tests/test_autotrait.rs
@@ -1,6 +1,7 @@
 #![allow(clippy::extra_unused_type_parameters)]
 
 use anyhow::Error;
+use std::panic::{RefUnwindSafe, UnwindSafe};
 
 #[test]
 fn test_send() {
@@ -13,3 +14,21 @@
     fn assert_sync<T: Sync>() {}
     assert_sync::<Error>();
 }
+
+#[test]
+fn test_unwind_safe() {
+    fn assert_unwind_safe<T: UnwindSafe>() {}
+    assert_unwind_safe::<Error>();
+}
+
+#[test]
+fn test_ref_unwind_safe() {
+    fn assert_ref_unwind_safe<T: RefUnwindSafe>() {}
+    assert_ref_unwind_safe::<Error>();
+}
+
+#[test]
+fn test_unpin() {
+    fn assert_unpin<T: Unpin>() {}
+    assert_unpin::<Error>();
+}
diff --git a/crates/anyhow/tests/test_backtrace.rs b/crates/anyhow/tests/test_backtrace.rs
index c89559e..938c1c2 100644
--- a/crates/anyhow/tests/test_backtrace.rs
+++ b/crates/anyhow/tests/test_backtrace.rs
@@ -1,7 +1,7 @@
 #![allow(clippy::let_underscore_untyped)]
 
 #[rustversion::not(nightly)]
-#[ignore]
+#[ignore = "requires nightly"]
 #[test]
 fn test_backtrace() {}
 
diff --git a/crates/anyhow/tests/test_ensure.rs b/crates/anyhow/tests/test_ensure.rs
index aeff3ac..b43490a 100644
--- a/crates/anyhow/tests/test_ensure.rs
+++ b/crates/anyhow/tests/test_ensure.rs
@@ -1,6 +1,9 @@
 #![allow(
     clippy::bool_to_int_with_if,
+    clippy::char_lit_as_u8,
+    clippy::deref_addrof,
     clippy::diverging_sub_expression,
+    clippy::erasing_op,
     clippy::extra_unused_type_parameters,
     clippy::if_same_then_else,
     clippy::ifs_same_cond,
@@ -16,6 +19,7 @@
     clippy::redundant_pattern_matching,
     clippy::too_many_lines,
     clippy::unit_arg,
+    clippy::unnecessary_cast,
     clippy::while_immutable_condition,
     clippy::zero_ptr,
     irrefutable_let_patterns
@@ -128,6 +132,19 @@
         test,
         "Condition failed: `while false == true && false {} < ()` (() vs ())",
     );
+
+    let a = 15;
+    let b = 3;
+    let test = || Ok(ensure!(a <= b || a - b <= 10));
+    assert_err(test, "Condition failed: `a <= b || a - b <= 10`");
+}
+
+#[test]
+fn test_high_precedence_binary_operator() {
+    let a = 15;
+    let b = 3;
+    let test = || Ok(ensure!(a - b <= 10));
+    assert_err(test, "Condition failed: `a - b <= 10` (12 vs 10)");
 }
 
 #[test]
@@ -136,18 +153,18 @@
     // identifier, nor as `(S + move || 1) == (1)` by misinterpreting the
     // closure precedence.
     let test = || Ok(ensure!(S + move || 1 == 1));
-    assert_err(test, "Condition failed: `S + (move || 1 == 1)`");
+    assert_err(test, "Condition failed: `S + move || 1 == 1`");
 
     let test = || Ok(ensure!(S + || 1 == 1));
-    assert_err(test, "Condition failed: `S + (|| 1 == 1)`");
+    assert_err(test, "Condition failed: `S + || 1 == 1`");
 
     // Must not partition as `S + ((move | ()) | 1) == 1` by treating those
     // pipes as bitwise-or.
     let test = || Ok(ensure!(S + move |()| 1 == 1));
-    assert_err(test, "Condition failed: `S + (move |()| 1 == 1)`");
+    assert_err(test, "Condition failed: `S + move |()| 1 == 1`");
 
     let test = || Ok(ensure!(S + |()| 1 == 1));
-    assert_err(test, "Condition failed: `S + (|()| 1 == 1)`");
+    assert_err(test, "Condition failed: `S + |()| 1 == 1`");
 }
 
 #[test]
@@ -169,6 +186,17 @@
     assert_err(test, "Condition failed: `&mut x == *&&mut &2` (1 vs 2)");
 }
 
+#[rustversion::since(1.82)]
+#[test]
+fn test_raw_addr() {
+    let mut x = 1;
+    let test = || Ok(ensure!(S + &raw const x != S + &raw mut x));
+    assert_err(
+        test,
+        "Condition failed: `S + &raw const x != S + &raw mut x` (false vs false)",
+    );
+}
+
 #[test]
 fn test_if() {
     #[rustfmt::skip]
@@ -207,7 +235,7 @@
     let test = || Ok(ensure!(if let | 1 | 2 = 2 {}.t(1) == 2));
     assert_err(
         test,
-        "Condition failed: `if let 1 | 2 = 2 {}.t(1) == 2` (1 vs 2)",
+        "Condition failed: `if let | 1 | 2 = 2 {}.t(1) == 2` (1 vs 2)",
     );
 }
 
@@ -252,7 +280,7 @@
     let test = || Ok(ensure!(for | _x in iter::once(0) {}.t(1) == 2));
     assert_err(
         test,
-        "Condition failed: `for _x in iter::once(0) {}.t(1) == 2` (1 vs 2)",
+        "Condition failed: `for | _x in iter::once(0) {}.t(1) == 2` (1 vs 2)",
     );
 
     #[rustfmt::skip]
@@ -269,7 +297,7 @@
     let test = || Ok(ensure!(match 1 == 1 { true => 1, false => 0 } == 2));
     assert_err(
         test,
-        "Condition failed: `match 1 == 1 { true => 1, false => 0, } == 2` (1 vs 2)",
+        "Condition failed: `match 1 == 1 { true => 1, false => 0 } == 2` (1 vs 2)",
     );
 }
 
@@ -326,7 +354,7 @@
     let test = || Ok(ensure!(Error::msg::<&str,>.t(1) == 2));
     assert_err(
         test,
-        "Condition failed: `Error::msg::<&str>.t(1) == 2` (1 vs 2)",
+        "Condition failed: `Error::msg::<&str,>.t(1) == 2` (1 vs 2)",
     );
 
     let test = || Ok(ensure!(Error::msg::<<str as ToOwned>::Owned>.t(1) == 2));
@@ -345,7 +373,7 @@
     let test = || Ok(ensure!(Chain::<'static,>::new.t(1) == 2));
     assert_err(
         test,
-        "Condition failed: `Chain::<'static>::new.t(1) == 2` (1 vs 2)",
+        "Condition failed: `Chain::<'static,>::new.t(1) == 2` (1 vs 2)",
     );
 
     fn f<const I: isize>() {}
@@ -377,7 +405,7 @@
 
     #[rustfmt::skip]
     let test = || Ok(ensure!(E::U::<u8,>>E::U));
-    assert_err(test, "Condition failed: `E::U::<u8> > E::U` (U vs U)");
+    assert_err(test, "Condition failed: `E::U::<u8,> > E::U` (U vs U)");
 
     let test = || Ok(ensure!(Generic::<dyn Debug + Sync> != Generic));
     assert_err(
@@ -399,7 +427,7 @@
     };
     assert_err(
         test,
-        "Condition failed: `Generic::<dyn Fn() + ::std::marker::Sync> != Generic` (Generic vs Generic)",
+        "Condition failed: `Generic::<dyn Fn::() + ::std::marker::Sync> != Generic` (Generic vs Generic)",
     );
 }
 
@@ -464,7 +492,9 @@
 fn test_whitespace() {
     #[derive(Debug)]
     pub struct Point {
+        #[allow(dead_code)]
         pub x: i32,
+        #[allow(dead_code)]
         pub y: i32,
     }
 
diff --git a/crates/anyhow/tests/test_fmt.rs b/crates/anyhow/tests/test_fmt.rs
index 016b4b8..4cd2d7b 100644
--- a/crates/anyhow/tests/test_fmt.rs
+++ b/crates/anyhow/tests/test_fmt.rs
@@ -79,7 +79,6 @@
 }
 
 #[test]
-#[cfg_attr(not(std_backtrace), ignore)]
 fn test_debug() {
     assert!(format!("{:?}", f().unwrap_err()).starts_with(EXPECTED_DEBUG_F));
     assert!(format!("{:?}", g().unwrap_err()).starts_with(EXPECTED_DEBUG_G));
diff --git a/crates/anyhow/tests/test_macros.rs b/crates/anyhow/tests/test_macros.rs
index a3342ab..10740a9 100644
--- a/crates/anyhow/tests/test_macros.rs
+++ b/crates/anyhow/tests/test_macros.rs
@@ -1,7 +1,9 @@
 #![allow(
     clippy::assertions_on_result_states,
     clippy::eq_op,
+    clippy::incompatible_msrv, // https://github.com/rust-lang/rust-clippy/issues/12257
     clippy::items_after_statements,
+    clippy::match_single_binding,
     clippy::needless_pass_by_value,
     clippy::shadow_unrelated,
     clippy::wildcard_imports
@@ -10,7 +12,7 @@
 mod common;
 
 use self::common::*;
-use anyhow::{anyhow, ensure};
+use anyhow::{anyhow, ensure, Result};
 use std::cell::Cell;
 use std::future;
 
@@ -53,6 +55,20 @@
 }
 
 #[test]
+fn test_ensure_nonbool() -> Result<()> {
+    struct Struct {
+        condition: bool,
+    }
+
+    let s = Struct { condition: true };
+    match &s {
+        Struct { condition } => ensure!(condition), // &bool
+    }
+
+    Ok(())
+}
+
+#[test]
 fn test_temporaries() {
     fn require_send_sync(_: impl Send + Sync) {}
 
diff --git a/crates/anyhow/tests/test_repr.rs b/crates/anyhow/tests/test_repr.rs
index 065041c..2976cd8 100644
--- a/crates/anyhow/tests/test_repr.rs
+++ b/crates/anyhow/tests/test_repr.rs
@@ -4,7 +4,6 @@
 
 use self::drop::{DetectDrop, Flag};
 use anyhow::Error;
-use std::marker::Unpin;
 use std::mem;
 
 #[test]
diff --git a/crates/anyhow/tests/ui/ensure-nonbool.rs b/crates/anyhow/tests/ui/ensure-nonbool.rs
new file mode 100644
index 0000000..c7df4e1
--- /dev/null
+++ b/crates/anyhow/tests/ui/ensure-nonbool.rs
@@ -0,0 +1,40 @@
+use anyhow::{ensure, Result};
+use std::ops::{Deref, Not};
+
+struct Bool(bool);
+
+struct DerefBool(bool);
+
+struct NotBool(bool);
+
+impl Deref for DerefBool {
+    type Target = bool;
+    fn deref(&self) -> &Self::Target {
+        &self.0
+    }
+}
+
+impl Not for NotBool {
+    type Output = bool;
+    fn not(self) -> Self::Output {
+        !self.0
+    }
+}
+
+fn main() -> Result<()> {
+    ensure!("...");
+
+    let mut s = Bool(true);
+    match &mut s {
+        Bool(cond) => ensure!(cond),
+    }
+
+    let db = DerefBool(true);
+    ensure!(db);
+    ensure!(&db);
+
+    let nb = NotBool(true);
+    ensure!(nb);
+
+    Ok(())
+}
diff --git a/crates/anyhow/tests/ui/ensure-nonbool.stderr b/crates/anyhow/tests/ui/ensure-nonbool.stderr
new file mode 100644
index 0000000..3fdb8e6
--- /dev/null
+++ b/crates/anyhow/tests/ui/ensure-nonbool.stderr
@@ -0,0 +1,91 @@
+error[E0277]: the trait bound `&str: __private::not::Bool` is not satisfied
+  --> tests/ui/ensure-nonbool.rs:25:13
+   |
+25 |     ensure!("...");
+   |     --------^^^^^-
+   |     |       |
+   |     |       the trait `__private::not::Bool` is not implemented for `&str`
+   |     required by a bound introduced by this call
+   |
+   = help: the following other types implement trait `__private::not::Bool`:
+             &bool
+             bool
+note: required by a bound in `anyhow::__private::not`
+  --> src/lib.rs
+   |
+   |     pub fn not(cond: impl Bool) -> bool {
+   |                           ^^^^ required by this bound in `not`
+
+error[E0277]: the trait bound `&mut bool: __private::not::Bool` is not satisfied
+  --> tests/ui/ensure-nonbool.rs:29:31
+   |
+29 |         Bool(cond) => ensure!(cond),
+   |                       --------^^^^-
+   |                       |       |
+   |                       |       the trait `__private::not::Bool` is not implemented for `&mut bool`
+   |                       required by a bound introduced by this call
+   |
+   = help: the following other types implement trait `__private::not::Bool`:
+             &bool
+             bool
+   = note: `__private::not::Bool` is implemented for `&bool`, but not for `&mut bool`
+note: required by a bound in `anyhow::__private::not`
+  --> src/lib.rs
+   |
+   |     pub fn not(cond: impl Bool) -> bool {
+   |                           ^^^^ required by this bound in `not`
+
+error[E0277]: the trait bound `DerefBool: __private::not::Bool` is not satisfied
+  --> tests/ui/ensure-nonbool.rs:33:13
+   |
+33 |     ensure!(db);
+   |     --------^^-
+   |     |       |
+   |     |       the trait `__private::not::Bool` is not implemented for `DerefBool`
+   |     required by a bound introduced by this call
+   |
+   = help: the following other types implement trait `__private::not::Bool`:
+             &bool
+             bool
+note: required by a bound in `anyhow::__private::not`
+  --> src/lib.rs
+   |
+   |     pub fn not(cond: impl Bool) -> bool {
+   |                           ^^^^ required by this bound in `not`
+
+error[E0277]: the trait bound `&DerefBool: __private::not::Bool` is not satisfied
+  --> tests/ui/ensure-nonbool.rs:34:13
+   |
+34 |     ensure!(&db);
+   |     --------^^^-
+   |     |       |
+   |     |       the trait `__private::not::Bool` is not implemented for `&DerefBool`
+   |     required by a bound introduced by this call
+   |
+note: required by a bound in `anyhow::__private::not`
+  --> src/lib.rs
+   |
+   |     pub fn not(cond: impl Bool) -> bool {
+   |                           ^^^^ required by this bound in `not`
+help: consider dereferencing here
+   |
+34 |     ensure!(&*db);
+   |              +
+
+error[E0277]: the trait bound `NotBool: __private::not::Bool` is not satisfied
+  --> tests/ui/ensure-nonbool.rs:37:13
+   |
+37 |     ensure!(nb);
+   |     --------^^-
+   |     |       |
+   |     |       the trait `__private::not::Bool` is not implemented for `NotBool`
+   |     required by a bound introduced by this call
+   |
+   = help: the following other types implement trait `__private::not::Bool`:
+             &bool
+             bool
+note: required by a bound in `anyhow::__private::not`
+  --> src/lib.rs
+   |
+   |     pub fn not(cond: impl Bool) -> bool {
+   |                           ^^^^ required by this bound in `not`
diff --git a/crates/anyhow/tests/ui/no-impl.stderr b/crates/anyhow/tests/ui/no-impl.stderr
index 1ddf768..e06d70b 100644
--- a/crates/anyhow/tests/ui/no-impl.stderr
+++ b/crates/anyhow/tests/ui/no-impl.stderr
@@ -2,11 +2,7 @@
  --> tests/ui/no-impl.rs:7:13
   |
 4 | struct Error;
-  | ------------
-  | |
-  | doesn't satisfy `Error: Into<anyhow::Error>`
-  | doesn't satisfy `Error: anyhow::kind::TraitKind`
-  | doesn't satisfy `Error: std::fmt::Display`
+  | ------------ doesn't satisfy `Error: Into<anyhow::Error>`, `Error: anyhow::kind::TraitKind` or `Error: std::fmt::Display`
 ...
 7 |     let _ = anyhow!(Error);
   |             ^^^^^^^^^^^^^^ method cannot be called on `&Error` due to unsatisfied trait bounds
@@ -28,4 +24,9 @@
   |
   | pub trait Into<T>: Sized {
   | ^^^^^^^^^^^^^^^^^^^^^^^^
+  = help: items from traits can only be used if the trait is implemented and in scope
+  = note: the following traits define an item `anyhow_kind`, perhaps you need to implement one of them:
+          candidate #1: `anyhow::kind::AdhocKind`
+          candidate #2: `anyhow::kind::BoxedKind`
+          candidate #3: `anyhow::kind::TraitKind`
   = note: this error originates in the macro `anyhow` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/pseudo_crate/Cargo.lock b/pseudo_crate/Cargo.lock
index a496ef7..89f76ca 100644
--- a/pseudo_crate/Cargo.lock
+++ b/pseudo_crate/Cargo.lock
@@ -600,9 +600,9 @@
 
 [[package]]
 name = "anyhow"
-version = "1.0.79"
+version = "1.0.95"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca"
+checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04"
 
 [[package]]
 name = "arbitrary"
diff --git a/pseudo_crate/Cargo.toml b/pseudo_crate/Cargo.toml
index 35020fc..7a9ed26 100644
--- a/pseudo_crate/Cargo.toml
+++ b/pseudo_crate/Cargo.toml
@@ -15,7 +15,7 @@
 anes = "=0.2.0"
 annotate-snippets = "=0.9.2"
 anstyle = "=1.0.10"
-anyhow = "=1.0.79"
+anyhow = "=1.0.95"
 arbitrary = "=1.4.1"
 arc-swap = "=1.7.1"
 argh = "=0.1.12"
