diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ef02b461..3a29b629 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -18,7 +18,7 @@ jobs: strategy: matrix: version: - - 1.63.0 # MSRV + - 1.72.1 # MSRV - stable - nightly os: @@ -38,19 +38,19 @@ jobs: rustup override set ${{ matrix.version }} - name: check build serde,macos_kqueue for examples - if: matrix.version != '1.63.0' && matrix.os == 'macos-latest' + if: matrix.version != '1.72.1' && matrix.os == 'macos-latest' run: cargo check -p notify --features=serde,macos_kqueue --examples - name: check build serde,macos_kqueue - if: matrix.version == '1.63.0' && matrix.os == 'macos-latest' + if: matrix.version == '1.72.1' && matrix.os == 'macos-latest' run: cargo check -p notify --features=serde,macos_kqueue - name: check build serde for examples - if: matrix.version != '1.63.0' && matrix.os != 'macos-latest' + if: matrix.version != '1.72.1' && matrix.os != 'macos-latest' run: cargo check -p notify --features=serde --examples - name: check build serde - if: matrix.version == '1.63.0' && matrix.os != 'macos-latest' + if: matrix.version == '1.72.1' && matrix.os != 'macos-latest' run: cargo check --features=serde - name: check build without crossbeam/default features diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a5e4b47..e879dba6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ v5 maintenance branch is on `v5_maintenance` after `5.2.0` v4 commits split out to branch `v4_maintenance` starting with `4.0.16` +## notify 7.0.0 + +- CHANGE: raise MSRV to 1.72 +- CHANGE: remove internal use of crossbeam-channels + ## notify-types 1.0.0 New crate containing public type definitions for the notify and debouncer crates. @@ -13,7 +18,7 @@ New crate containing public type definitions for the notify and debouncer crates ## debouncer-full 0.4.0 -- CHANGE: Manage root folder paths for the file ID cache automatically. **breaking** +- CHANGE: manage root folder paths for the file ID cache automatically **breaking** ```rust debouncer.watcher().watch(path, RecursiveMode::Recursive)?; @@ -26,8 +31,8 @@ New crate containing public type definitions for the notify and debouncer crates debouncer.watch(path, RecursiveMode::Recursive)?; ``` -- CHANGE: Add `RecommendedCache`, which automatically enables the file ID cache on Windows and MacOS - and disables it on Linux, where it is not needed. +- CHANGE: add `RecommendedCache`, which automatically enables the file ID cache on Windows and MacOS + and disables it on Linux, where it is not needed ## debouncer-full 0.3.1 (2023-08-21) diff --git a/Cargo.toml b/Cargo.toml index fd48a642..d9d0c87a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,8 +6,45 @@ members = [ "notify-debouncer-mini", "notify-debouncer-full", "file-id", - # internal - "examples" - #"examples/hot_reload_tide" until https://github.com/rustsec/rustsec/issues/501 is resolved + "examples", ] -exclude = ["examples/hot_reload_tide"] +exclude = [ + "examples/hot_reload_tide", # excluded until https://github.com/rustsec/rustsec/issues/501 is resolved +] + +[workspace.package] +rust-version = "1.72" +homepage = "https://github.com/notify-rs/notify" +repository = "https://github.com/notify-rs/notify.git" +edition = "2021" + +[workspace.dependencies] +bitflags = "2.3.0" +crossbeam-channel = "0.5.0" +deser-hjson = "2.2.4" +env_logger = "0.11.2" +file-id = { path = "file-id" } +filetime = "0.2.22" +fsevent-sys = "4.0.0" +futures = "0.3.30" +inotify = { version = "0.10.2", default-features = false } +insta = "1.34.0" +kqueue = "1.0.8" +libc = "0.2.4" +log = "0.4.17" +mio = { version = "0.8.10", features = ["os-ext"] } +mock_instant = "0.3.0" +instant = "0.1.12" +nix = "0.27.0" +notify = { path = "notify" } +notify-debouncer-full = { path = "notify-debouncer-full" } +notify-debouncer-mini = { path = "notify-debouncer-mini" } +notify-types = { path = "notify-types" } +pretty_assertions = "1.3.0" +rand = "0.8.5" +rstest = "0.18.2" +serde = { version = "1.0.89", features = ["derive"] } +serde_json = "1.0.39" +tempfile = "3.10.0" +walkdir = "2.4.0" +windows-sys = "0.52.0" diff --git a/examples/Cargo.toml b/examples/Cargo.toml index a0673c19..e956a718 100644 --- a/examples/Cargo.toml +++ b/examples/Cargo.toml @@ -5,13 +5,13 @@ publish = false edition = "2021" [dev-dependencies] -notify = { version = "6.1.1", path = "../notify" } -notify-debouncer-mini = { version = "0.4.1", path = "../notify-debouncer-mini" } -notify-debouncer-full = { version = "0.4.0", path = "../notify-debouncer-full" } -futures = "0.3" -tempfile = "3.5.0" -log = "0.4.17" -env_logger = "0.10.0" +notify = { workspace = true } +notify-debouncer-mini = { workspace = true } +notify-debouncer-full = { workspace = true } +futures = { workspace = true } +tempfile = { workspace = true } +log = { workspace = true } +env_logger = { workspace = true } [[example]] name = "async_monitor" diff --git a/file-id/Cargo.toml b/file-id/Cargo.toml index cacb747e..e664f5e9 100644 --- a/file-id/Cargo.toml +++ b/file-id/Cargo.toml @@ -1,28 +1,27 @@ [package] name = "file-id" version = "0.2.1" -rust-version = "1.60" description = "Utility for reading inode numbers (Linux, MacOS) and file IDs (Windows)" documentation = "https://docs.rs/notify" -homepage = "https://github.com/notify-rs/notify" -repository = "https://github.com/notify-rs/notify.git" readme = "../README.md" license = "MIT OR Apache-2.0" keywords = ["filesystem", "inode", "file", "index"] categories = ["filesystem"] authors = ["Daniel Faust "] - -edition = "2021" +rust-version = { workspace = true } +edition = { workspace = true } +homepage = { workspace = true } +repository = { workspace = true } [[bin]] name = "file-id" path = "bin/file_id.rs" [dependencies] -serde = { version = "1.0.89", features = ["derive"], optional = true } +serde = { workspace = true, optional = true } [target.'cfg(windows)'.dependencies] -windows-sys = { version = "0.48.0", features = ["Win32_Storage_FileSystem", "Win32_Foundation"] } +windows-sys = { workspace = true, features = ["Win32_Storage_FileSystem", "Win32_Foundation"] } [dev-dependencies] -tempfile = "3.2.0" +tempfile = { workspace = true } diff --git a/notify-debouncer-full/Cargo.toml b/notify-debouncer-full/Cargo.toml index 91ff54c3..b4613778 100644 --- a/notify-debouncer-full/Cargo.toml +++ b/notify-debouncer-full/Cargo.toml @@ -1,46 +1,38 @@ [package] name = "notify-debouncer-full" version = "0.4.0" -edition = "2021" -rust-version = "1.63" description = "notify event debouncer optimized for ease of use" documentation = "https://docs.rs/notify-debouncer-full" -homepage = "https://github.com/notify-rs/notify" -repository = "https://github.com/notify-rs/notify.git" authors = ["Daniel Faust "] keywords = ["events", "filesystem", "notify", "watch"] license = "MIT OR Apache-2.0" readme = "README.md" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[lib] -name = "notify_debouncer_full" -path = "src/lib.rs" +rust-version = { workspace = true } +edition = { workspace = true } +homepage = { workspace = true } +repository = { workspace = true } [features] -default = ["crossbeam","macos_fsevent"] +default = ["macos_fsevent"] serde = ["notify-types/serde"] -mock_instant = ["dep:mock_instant","notify-types/mock_instant"] -# can't use dep:crossbeam-channel and feature name crossbeam-channel below rust 1.60 -crossbeam = ["crossbeam-channel","notify/crossbeam-channel"] -serialization-compat-6 = ["notify/serialization-compat-6"] +mock_instant = ["dep:mock_instant", "notify-types/mock_instant"] +crossbeam-channel = ["dep:crossbeam-channel", "notify/crossbeam-channel"] macos_fsevent = ["notify/macos_fsevent"] macos_kqueue = ["notify/macos_kqueue"] [dependencies] -notify = { version = "6.1.1", path = "../notify", default-features = false } -notify-types = { version = "1.0.0", path = "../notify-types" } -crossbeam-channel = { version = "0.5", optional = true } -file-id = { version = "0.2.1", path = "../file-id" } -walkdir = "2.2.2" -log = "0.4.17" -mock_instant = { version = "0.3.0", optional = true } +notify = { workspace = true } +notify-types = { workspace = true } +crossbeam-channel = { workspace = true, optional = true } +file-id = { workspace = true } +walkdir = { workspace = true } +log = { workspace = true } +mock_instant = { workspace = true, optional = true } [dev-dependencies] -notify-debouncer-full = { path = ".", features = ["mock_instant"] } -pretty_assertions = "1.3.0" -rstest = "0.18" -serde = { version = "1.0.89", features = ["derive"] } -deser-hjson = "1.1.1" -rand = "0.8.5" +notify-debouncer-full = { workspace = true, features = ["mock_instant"] } +pretty_assertions = { workspace = true } +rstest = { workspace = true } +serde = { workspace = true } +deser-hjson = { workspace = true } +rand = { workspace = true } diff --git a/notify-debouncer-full/README.md b/notify-debouncer-full/README.md index 9f451b54..19a49bc7 100644 --- a/notify-debouncer-full/README.md +++ b/notify-debouncer-full/README.md @@ -14,27 +14,7 @@ A debouncer for [notify] that is optimized for ease of use. ## Features -- `crossbeam` enabled by default, for crossbeam channel support. - - This may create problems used in tokio environments. See [#380](https://github.com/notify-rs/notify/issues/380). - Use something like the following to disable it. - - ```toml - notify-debouncer-full = { version = "*", default-features = false } - ``` - - This also passes through to notify as `crossbeam-channel` feature. - - On MacOS, when disabling default features, enable either the `macos_fsevent` feature - or, on latest MacOS, the `macos_kqueue` feature to be passed through to notify. - - ```toml - # Using FSEvents - notify-debouncer-full = { version = "*", default-features = false, features = ["macos_fsevent"] } - - # Using Kernel Queues - notify-debouncer-full = { version = "*", default-features = false, features = ["macos_kqueue"] } - ``` +- `crossbeam-channel` passed down to notify, off by default - `serialization-compat-6` passed down to notify, off by default diff --git a/notify-debouncer-full/src/lib.rs b/notify-debouncer-full/src/lib.rs index d3123e71..0996fd66 100644 --- a/notify-debouncer-full/src/lib.rs +++ b/notify-debouncer-full/src/lib.rs @@ -49,9 +49,7 @@ //! //! The following crate features can be turned on or off in your cargo dependency config: //! -//! - `crossbeam` enabled by default, adds [`DebounceEventHandler`](DebounceEventHandler) support for crossbeam channels. -//! Also enables crossbeam-channel in the re-exported notify. You may want to disable this when using the tokio async runtime. -//! - `serde` enables serde support for events. +//! - `crossbeam` passed down to notify, off by default //! - `serialization-compat-6` passed down to notify, off by default //! //! # Caveats diff --git a/notify-debouncer-mini/Cargo.toml b/notify-debouncer-mini/Cargo.toml index 2ca82c67..122b1eef 100644 --- a/notify-debouncer-mini/Cargo.toml +++ b/notify-debouncer-mini/Cargo.toml @@ -1,34 +1,26 @@ [package] name = "notify-debouncer-mini" version = "0.4.1" -edition = "2021" -rust-version = "1.63" description = "notify mini debouncer for events" documentation = "https://docs.rs/notify-debouncer-mini" -homepage = "https://github.com/notify-rs/notify" -repository = "https://github.com/notify-rs/notify.git" authors = ["Aron Heinecke "] keywords = ["events", "filesystem", "notify", "watch"] license = "MIT OR Apache-2.0" readme = "README.md" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[lib] -name = "notify_debouncer_mini" -path = "src/lib.rs" +rust-version = { workspace = true } +edition = { workspace = true } +homepage = { workspace = true } +repository = { workspace = true } [features] -default = ["crossbeam","macos_fsevent"] +default = ["macos_fsevent"] serde = ["notify-types/serde"] -# can't use dep:crossbeam-channel and feature name crossbeam-channel below rust 1.60 -crossbeam = ["crossbeam-channel","notify/crossbeam-channel"] -serialization-compat-6 = ["notify/serialization-compat-6"] +crossbeam-channel = ["dep:crossbeam-channel", "notify/crossbeam-channel"] macos_fsevent = ["notify/macos_fsevent"] macos_kqueue = ["notify/macos_kqueue"] [dependencies] -notify = { version = "6.1.1", path = "../notify", default-features = false } -notify-types = { version = "1.0.0", path = "../notify-types" } -crossbeam-channel = { version = "0.5", optional = true } -log = "0.4.17" +notify = { workspace = true } +notify-types = { workspace = true } +crossbeam-channel = { workspace = true, optional = true } +log = { workspace = true } diff --git a/notify-debouncer-mini/README.md b/notify-debouncer-mini/README.md index a5ffeb91..058ed109 100644 --- a/notify-debouncer-mini/README.md +++ b/notify-debouncer-mini/README.md @@ -6,27 +6,8 @@ Tiny debouncer for [notify]. Filters incoming events and emits only one event pe ## Features -- `crossbeam` enabled by default, for crossbeam channel support. +- `crossbeam-channel` passed down to notify, off by default - This may create problems used in tokio environments. See [#380](https://github.com/notify-rs/notify/issues/380). - Use something like the following to disable it. - - ```toml - notify-debouncer-mini = { version = "*", default-features = false } - ``` - - This also passes through to notify as `crossbeam-channel` feature. - - On MacOS, when disabling default features, enable either the `macos_fsevent` feature - or, on latest MacOS, the `macos_kqueue` feature to be passed through to notify. - - ```toml - # Using FSEvents - notify-debouncer-mini = { version = "*", default-features = false, features = ["macos_fsevent"] } - - # Using Kernel Queues - notify-debouncer-mini = { version = "*", default-features = false, features = ["macos_kqueue"] } - ``` - `serde` for serde support of event types, off by default - `serialization-compat-6` passed down to notify, off by default diff --git a/notify-debouncer-mini/src/lib.rs b/notify-debouncer-mini/src/lib.rs index bbbf6c5a..84f30209 100644 --- a/notify-debouncer-mini/src/lib.rs +++ b/notify-debouncer-mini/src/lib.rs @@ -45,9 +45,8 @@ //! //! The following crate features can be turned on or off in your cargo dependency config: //! -//! - `crossbeam` enabled by default, adds [`DebounceEventHandler`](DebounceEventHandler) support for crossbeam channels. -//! Also enables crossbeam-channel in the re-exported notify. You may want to disable this when using the tokio async runtime. -//! - `serde` enables serde support for events. +//! - `crossbeam` passed down to notify, off by default +//! - `serde` enables serde support for events, off by default //! - `serialization-compat-6` passed down to notify, off by default //! //! # Caveats diff --git a/notify-types/Cargo.toml b/notify-types/Cargo.toml index 7b63de71..66a524f5 100644 --- a/notify-types/Cargo.toml +++ b/notify-types/Cargo.toml @@ -1,28 +1,27 @@ [package] name = "notify-types" version = "1.0.0" -rust-version = "1.63" description = "Types used by the notify crate" documentation = "https://docs.rs/notify-types" -homepage = "https://github.com/notify-rs/notify" -repository = "https://github.com/notify-rs/notify.git" readme = "../README.md" license = "MIT OR Apache-2.0" keywords = ["events", "filesystem", "notify", "watch"] categories = ["filesystem"] authors = ["Daniel Faust "] - -edition = "2021" +rust-version = { workspace = true } +edition = { workspace = true } +homepage = { workspace = true } +repository = { workspace = true } [features] serialization-compat-6 = [] [dependencies] -instant = "0.1.12" -serde = { version = "1.0.89", features = ["derive"], optional = true } -mock_instant = { version = "0.3.0", optional = true } +serde = { workspace = true, optional = true } +mock_instant = { workspace = true, optional = true } +instant.workspace = true [dev-dependencies] -serde_json = "1.0.39" -insta = "1.34.0" -rstest = "0.17.0" +serde_json = { workspace = true } +insta = { workspace = true } +rstest = { workspace = true } diff --git a/notify/Cargo.toml b/notify/Cargo.toml index 21799962..c6025c83 100644 --- a/notify/Cargo.toml +++ b/notify/Cargo.toml @@ -1,11 +1,8 @@ [package] name = "notify" version = "6.1.1" -rust-version = "1.63" description = "Cross-platform filesystem notification library" documentation = "https://docs.rs/notify" -homepage = "https://github.com/notify-rs/notify" -repository = "https://github.com/notify-rs/notify.git" readme = "../README.md" license = "CC0-1.0" keywords = ["events", "filesystem", "notify", "watch"] @@ -15,46 +12,45 @@ authors = [ "Daniel Faust ", "Aron Heinecke " ] +rust-version = { workspace = true } +edition = { workspace = true } +homepage = { workspace = true } +repository = { workspace = true } -edition = "2021" +[features] +default = ["macos_fsevent"] +serde = ["notify-types/serde"] +macos_kqueue = ["kqueue", "mio"] +macos_fsevent = ["fsevent-sys"] [dependencies] -notify-types = { version = "1.0.0", path = "../notify-types" } -crossbeam-channel = { version = "0.5.0", optional = true } -filetime = "0.2.22" -libc = "0.2.4" -log = "0.4.17" -walkdir = "2.2.2" +notify-types = { workspace = true } +crossbeam-channel = { workspace = true, optional = true } +filetime = { workspace = true } +libc = { workspace = true } +log = { workspace = true } +walkdir = { workspace = true } [target.'cfg(any(target_os="linux", target_os="android"))'.dependencies] -inotify = { version = "0.10", default-features = false } -mio = { version = "0.8", features = ["os-ext"] } +inotify = { workspace = true, default-features = false } +mio = { workspace = true } [target.'cfg(target_os="macos")'.dependencies] -bitflags = "2.3.0" -fsevent-sys = { version = "4", optional = true } -kqueue = { version = "1.0", optional = true } -mio = { version = "0.8", features = ["os-ext"], optional = true } +bitflags = { workspace = true } +fsevent-sys = { workspace = true, optional = true } +kqueue = { workspace = true, optional = true } +mio = { workspace = true, optional = true } [target.'cfg(windows)'.dependencies] -windows-sys = { version = "0.48.0", features = ["Win32_System_Threading", "Win32_Foundation", "Win32_Storage_FileSystem", "Win32_Security", "Win32_System_WindowsProgramming", "Win32_System_IO"] } +windows-sys = { workspace = true, features = ["Win32_System_Threading", "Win32_Foundation", "Win32_Storage_FileSystem", "Win32_Security", "Win32_System_WindowsProgramming", "Win32_System_IO"] } -[target.'cfg(any(target_os="freebsd", target_os="openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "ios"))'.dependencies] -kqueue = "^1.0.4" # fix for #344 -mio = { version = "0.8", features = ["os-ext"] } +[target.'cfg(any(target_os="freebsd", target_os="openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios"))'.dependencies] +kqueue = { workspace = true } +mio = { workspace = true } [dev-dependencies] -serde_json = "1.0.39" -tempfile = "3.2.0" -nix = "0.23.1" -insta = "1.34.0" -rstest = "0.17.0" - -[features] -default = ["macos_fsevent","crossbeam-channel"] -serde = ["notify-types/serde"] -timing_tests = [] -manual_tests = [] -macos_kqueue = ["kqueue", "mio"] -macos_fsevent = ["fsevent-sys"] -serialization-compat-6 = ["notify-types/serialization-compat-6"] +serde_json = { workspace = true } +tempfile = { workspace = true } +nix = { workspace = true } +insta = { workspace = true } +rstest = { workspace = true } diff --git a/notify/src/error.rs b/notify/src/error.rs index 7bed4fed..e12b7266 100644 --- a/notify/src/error.rs +++ b/notify/src/error.rs @@ -131,25 +131,12 @@ impl From for Error { } } -#[cfg(feature = "crossbeam-channel")] -impl From> for Error { - fn from(err: crossbeam_channel::SendError) -> Self { - Error::generic(&format!("internal channel disconnect: {:?}", err)) - } -} -#[cfg(not(feature = "crossbeam-channel"))] impl From> for Error { fn from(err: std::sync::mpsc::SendError) -> Self { Error::generic(&format!("internal channel disconnect: {:?}", err)) } } -#[cfg(feature = "crossbeam-channel")] -impl From for Error { - fn from(err: crossbeam_channel::RecvError) -> Self { - Error::generic(&format!("internal channel disconnect: {:?}", err)) - } -} -#[cfg(not(feature = "crossbeam-channel"))] + impl From for Error { fn from(err: std::sync::mpsc::RecvError) -> Self { Error::generic(&format!("internal channel disconnect: {:?}", err)) diff --git a/notify/src/lib.rs b/notify/src/lib.rs index 4d5eb766..e7e8f909 100644 --- a/notify/src/lib.rs +++ b/notify/src/lib.rs @@ -17,7 +17,6 @@ //! - `serde` for serialization of events //! - `macos_fsevent` enabled by default, for fsevent backend on macos //! - `macos_kqueue` for kqueue backend on macos -//! - `crossbeam-channel` enabled by default, see below //! - `serialization-compat-6` restores the serialization behavior of notify 6, off by default //! //! ### Serde @@ -28,19 +27,6 @@ //! notify = { version = "6.1.1", features = ["serde"] } //! ``` //! -//! ### Crossbeam-Channel & Tokio -//! -//! By default crossbeam-channel is used internally by notify. Which also allows the [Watcher] to be sync. -//! This can [cause issues](https://github.com/notify-rs/notify/issues/380) when used inside tokio. -//! -//! You can disable crossbeam-channel, letting notify fallback to std channels via -//! -//! ```toml -//! notify = { version = "6.1.1", default-features = false, features = ["macos_kqueue"] } -//! // Alternatively macos_fsevent instead of macos_kqueue -//! ``` -//! Note the `macos_kqueue` requirement here, otherwise no native backend is available on macos. -//! //! # Known Problems //! //! ### Network filesystems @@ -182,44 +168,18 @@ pub use error::{Error, ErrorKind, Result}; pub use notify_types::event::{self, Event, EventKind}; use std::path::Path; -#[allow(dead_code)] -#[cfg(feature = "crossbeam-channel")] -pub(crate) type Receiver = crossbeam_channel::Receiver; -#[allow(dead_code)] -#[cfg(not(feature = "crossbeam-channel"))] pub(crate) type Receiver = std::sync::mpsc::Receiver; - -#[allow(dead_code)] -#[cfg(feature = "crossbeam-channel")] -pub(crate) type Sender = crossbeam_channel::Sender; -#[allow(dead_code)] -#[cfg(not(feature = "crossbeam-channel"))] pub(crate) type Sender = std::sync::mpsc::Sender; - -// std limitation -#[allow(dead_code)] -#[cfg(feature = "crossbeam-channel")] -pub(crate) type BoundSender = crossbeam_channel::Sender; -#[allow(dead_code)] -#[cfg(not(feature = "crossbeam-channel"))] pub(crate) type BoundSender = std::sync::mpsc::SyncSender; -#[allow(dead_code)] #[inline] pub(crate) fn unbounded() -> (Sender, Receiver) { - #[cfg(feature = "crossbeam-channel")] - return crossbeam_channel::unbounded(); - #[cfg(not(feature = "crossbeam-channel"))] - return std::sync::mpsc::channel(); + std::sync::mpsc::channel() } -#[allow(dead_code)] #[inline] pub(crate) fn bounded(cap: usize) -> (BoundSender, Receiver) { - #[cfg(feature = "crossbeam-channel")] - return crossbeam_channel::bounded(cap); - #[cfg(not(feature = "crossbeam-channel"))] - return std::sync::mpsc::sync_channel(cap); + std::sync::mpsc::sync_channel(cap) } #[cfg(all(target_os = "macos", not(feature = "macos_kqueue")))] diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 00000000..7eb23c42 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,2 @@ +[toolchain] +channel = "1.72.1"