├── .gitignore ├── rust-toolchain.toml ├── README.md ├── partitions.csv ├── .cargo └── config.toml ├── sdkconfig.defaults ├── Cargo.toml ├── src ├── stepper.rs └── main.rs └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /.vscode 2 | /.embuild 3 | /target 4 | /.DS_Store 5 | -------------------------------------------------------------------------------- /rust-toolchain.toml: -------------------------------------------------------------------------------- 1 | [toolchain] 2 | channel = "nightly" 3 | components = ["rust-src"] 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Writing Rust apps on ESP32-C3 2 | 3 | This companion repository for my video series about running Rust applications on an ESP32 controller. 4 | 5 | To get started, check the [https://github.com/esp-rs/esp-idf-template] repo, make sure you follow the prerequisites defined there. 6 | 7 | -------------------------------------------------------------------------------- /partitions.csv: -------------------------------------------------------------------------------- 1 | # Name, Type, SubType, Offset, Size, Flags 2 | # Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap 3 | nvs, data, nvs, , 0x6000, 4 | phy_init, data, phy, , 0x1000, 5 | factory, app, factory, , 1700k, -------------------------------------------------------------------------------- /.cargo/config.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | target = "riscv32imc-esp-espidf" 3 | 4 | [target.riscv32imc-esp-espidf] 5 | linker = "ldproxy" 6 | # runner = "espflash --monitor" # Select this runner for espflash v1.x.x 7 | runner = "espflash flash --monitor" # Select this runner for espflash v2.x.x 8 | rustflags = ["--cfg", "espidf_time64", "-C", "default-linker-libraries"] 9 | 10 | [unstable] 11 | build-std = ["std", "panic_abort"] 12 | 13 | [env] 14 | # Note: these variables are not used when using pio builder (`cargo build --features pio`) 15 | ESP_IDF_VERSION = "release/v5.1" 16 | 17 | -------------------------------------------------------------------------------- /sdkconfig.defaults: -------------------------------------------------------------------------------- 1 | # Rust often needs a bit of an extra main task stack size compared to C (the default is 3K) 2 | CONFIG_ESP_MAIN_TASK_STACK_SIZE=7000 3 | 4 | # Use this to set FreeRTOS kernel tick frequency to 1000 Hz (100 Hz by default). 5 | # This allows to use 1 ms granuality for thread sleeps (10 ms by default). 6 | #CONFIG_FREERTOS_HZ=1000 7 | 8 | # Workaround for https://github.com/espressif/esp-idf/issues/7631 9 | #CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n 10 | #CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=n 11 | 12 | 13 | CONFIG_PARTITION_TABLE_SINGLE_APP= 14 | CONFIG_PARTITION_TABLE_CUSTOM=y 15 | CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../../../partitions.csv" -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "esp32-video" 3 | version = "0.1.0" 4 | authors = ["Frank Lyaruu "] 5 | edition = "2021" 6 | resolver = "2" 7 | rust-version = "1.66" 8 | 9 | [profile.release] 10 | opt-level = "s" 11 | 12 | [profile.dev] 13 | debug = true # Symbols are nice and they don't increase the size on Flash 14 | opt-level = "z" 15 | 16 | [features] 17 | 18 | default = ["std", "hal", "esp-idf-sys/native"] 19 | 20 | 21 | pio = ["esp-idf-sys/pio"] 22 | all = ["std", "nightly", "experimental", "embassy"] 23 | hal = ["esp-idf-hal", "embedded-svc", "esp-idf-svc"] 24 | std = ["alloc", "esp-idf-sys/std", "esp-idf-sys/binstart", "embedded-svc?/std", "esp-idf-hal?/std", "esp-idf-svc?/std"] 25 | alloc = ["embedded-svc?/alloc", "esp-idf-hal?/alloc", "esp-idf-svc?/alloc"] 26 | nightly = ["embedded-svc?/nightly", "esp-idf-svc?/nightly"] # Future: "esp-idf-hal?/nightly" 27 | experimental = ["embedded-svc?/experimental", "esp-idf-svc?/experimental"] 28 | embassy = ["esp-idf-hal?/embassy-sync", "esp-idf-hal?/critical-section", "esp-idf-hal?/edge-executor", "esp-idf-svc?/embassy-time-driver", "esp-idf-svc?/embassy-time-isr-queue"] 29 | 30 | [dependencies] 31 | log = { version = "0.4.17", default-features = false } 32 | esp-idf-sys = { version = "0.33", default-features = false } 33 | esp-idf-hal = { version = "0.41", optional = true, default-features = false } 34 | esp-idf-svc = { version = "0.46.1", optional = true, default-features = false } 35 | embedded-svc = { version = "0.25", optional = true, default-features = false } 36 | anyhow = "1.0.72" 37 | futures = "0.3.28" 38 | accel-stepper = { version = "0.1.0", features = ["std"] } 39 | 40 | [build-dependencies] 41 | embuild = "0.31.2" 42 | -------------------------------------------------------------------------------- /src/stepper.rs: -------------------------------------------------------------------------------- 1 | use accel_stepper::Device; 2 | use esp_idf_hal::gpio::{OutputPin, PinDriver, Output}; 3 | 4 | pub struct Stepper { 5 | p1: PinDriver<'static, T, Output>, 6 | p2: PinDriver<'static, U, Output>, 7 | p3: PinDriver<'static, V, Output>, 8 | p4: PinDriver<'static, W, Output>, 9 | } 10 | 11 | impl Device for Stepper { 12 | type Error = (); 13 | 14 | fn step(&mut self, ctx: &accel_stepper::StepContext) -> Result<(), Self::Error> { 15 | self.step(ctx.position); 16 | Ok(()) 17 | } 18 | } 19 | 20 | impl Stepper { 21 | pub fn new(p1: T, p2: U, p3: V, p4: W)->Self { 22 | Self { p1: PinDriver::output(p1).unwrap(), 23 | p2: PinDriver::output(p2).unwrap(), 24 | p3: PinDriver::output(p3).unwrap(), 25 | p4: PinDriver::output(p4).unwrap() 26 | } 27 | } 28 | 29 | pub fn stop(&mut self) { 30 | self.p1.set_low().unwrap(); 31 | self.p2.set_low().unwrap(); 32 | self.p3.set_low().unwrap(); 33 | self.p4.set_low().unwrap(); 34 | } 35 | 36 | pub fn step(&mut self, step: i64) { 37 | if step.rem_euclid(4) == 0 { 38 | self.p1.set_high().unwrap(); 39 | self.p2.set_low().unwrap(); 40 | self.p3.set_low().unwrap(); 41 | self.p4.set_low().unwrap(); 42 | } 43 | if step.rem_euclid(4) == 1 { 44 | self.p1.set_low().unwrap(); 45 | self.p2.set_high().unwrap(); 46 | self.p3.set_low().unwrap(); 47 | self.p4.set_low().unwrap(); 48 | } 49 | if step.rem_euclid(4) == 2 { 50 | self.p1.set_low().unwrap(); 51 | self.p2.set_low().unwrap(); 52 | self.p3.set_high().unwrap(); 53 | self.p4.set_low().unwrap(); 54 | } 55 | if step.rem_euclid(4) == 3 { 56 | self.p1.set_low().unwrap(); 57 | self.p2.set_low().unwrap(); 58 | self.p3.set_low().unwrap(); 59 | self.p4.set_high().unwrap(); 60 | } 61 | 62 | } 63 | } -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | use std::{thread::sleep, time::Duration, sync::{Mutex, Arc}, str::from_utf8, collections::HashMap}; 2 | 3 | use accel_stepper::{Driver, OperatingSystemClock}; 4 | use embedded_svc::{wifi::{Configuration, ClientConfiguration, AuthMethod}, http::Method::Post,http::Method::Get, io::Read}; 5 | use esp_idf_hal::{peripheral::Peripheral, prelude::Peripherals, gpio::PinDriver, ledc::{LedcTimerDriver, config::TimerConfig, LedcDriver}}; 6 | use esp_idf_svc::{eventloop::EspSystemEventLoop, nvs::{EspNvsPartition, NvsDefault, EspDefaultNvsPartition}, timer::{EspTimerService, Task, EspTaskTimerService}, wifi::{AsyncWifi, EspWifi}, ping::EspPing, http::server::EspHttpServer}; 7 | use esp_idf_sys as _; // If using the `binstart` feature of `esp-idf-sys`, always keep this module imported 8 | use log::*; 9 | use esp_idf_hal::units::*; 10 | 11 | mod stepper; 12 | 13 | const SSID: &str = env!("RUST_ESP32_STD_DEMO_WIFI_SSID"); 14 | const PASS: &str = env!("RUST_ESP32_STD_DEMO_WIFI_PASS"); 15 | 16 | #[derive(Debug)] 17 | struct Color { 18 | r: u8, 19 | g: u8, 20 | b: u8, 21 | } 22 | 23 | impl TryFrom<&str> for Color { 24 | type Error = anyhow::Error; 25 | 26 | fn try_from(input: &str) -> Result { 27 | Ok(Color { 28 | r: u8::from_str_radix(&input[0..2], 16)?, 29 | g: u8::from_str_radix(&input[2..4], 16)?, 30 | b: u8::from_str_radix(&input[4..6], 16)?, 31 | }) 32 | } 33 | } 34 | 35 | 36 | 37 | fn main() { 38 | // It is necessary to call this function once. Otherwise some patches to the runtime 39 | // implemented by esp-idf-sys might not link properly. See https://github.com/esp-rs/esp-idf-template/issues/71 40 | esp_idf_sys::link_patches(); 41 | // Bind the log crate to the ESP Logging facilities 42 | esp_idf_svc::log::EspLogger::initialize_default(); 43 | 44 | info!("Hello, world!"); 45 | 46 | let peripherals = Peripherals::take().unwrap(); 47 | let sysloop = EspSystemEventLoop::take().unwrap(); 48 | let timer_service = EspTaskTimerService::new().unwrap(); 49 | let _wifi = wifi(peripherals.modem, sysloop,Some(EspDefaultNvsPartition::take().unwrap()),timer_service).unwrap(); 50 | 51 | let mut server = EspHttpServer::new(&Default::default()).unwrap(); 52 | 53 | let servo_timer = peripherals.ledc.timer1; 54 | let servo_driver = LedcTimerDriver::new(servo_timer, &TimerConfig::new().frequency(50.Hz()).resolution(esp_idf_hal::ledc::Resolution::Bits14)).unwrap(); 55 | let servo = Arc::new(Mutex::new(LedcDriver::new(peripherals.ledc.channel3, servo_driver, peripherals.pins.gpio2).unwrap())); 56 | 57 | let mut driver = Driver::default(); 58 | driver.set_max_speed(500.0); 59 | driver.set_acceleration(200.0); 60 | 61 | let driver = Arc::new(Mutex::new(driver)); 62 | let endpoint_driver = driver.clone(); 63 | let clock = OperatingSystemClock::new(); 64 | 65 | let mut stepper = stepper::Stepper::new(peripherals.pins.gpio3, peripherals.pins.gpio4, peripherals.pins.gpio5, peripherals.pins.gpio6); 66 | // 2^14 - 1 67 | 68 | let max_duty = servo.lock().unwrap().get_max_duty(); 69 | 70 | let min = max_duty / 40; 71 | let max = max_duty / 8; 72 | 73 | fn interpolate(angle: u32, min: u32, max: u32)->u32 { 74 | angle * (max - min) / 180 + min 75 | } 76 | 77 | server.fn_handler("/servo", Post, move |mut req| { 78 | let mut buffer = [0_u8; 6]; 79 | let bytes_read = req.read(&mut buffer).unwrap(); 80 | let angle_string = from_utf8(&buffer[0..bytes_read]).unwrap(); 81 | let angle: u32 = angle_string.parse().unwrap(); 82 | // 50hz = 1000 / 50 = 20ms 83 | // 0.5 ms => 0 84 | // 2.5 ms => 180 85 | servo.lock().unwrap().set_duty(interpolate(angle,min,max)).unwrap(); 86 | Ok(()) 87 | }).unwrap().fn_handler("/stepper", Get, move |mut req| { 88 | let uri = req.uri(); 89 | let parts = uri.split_once('?').map(|(_,query_params)|query_params).unwrap_or(""); 90 | let params: HashMap<&str,&str> = parts.split('&').filter_map(|param| param.split_once('=')).collect(); 91 | let movement_command: i64 = params.get("command").unwrap_or(&"").parse().unwrap_or(0); 92 | endpoint_driver.lock().unwrap().move_by(movement_command); 93 | Ok(()) 94 | }).unwrap(); 95 | 96 | loop { 97 | driver.lock().unwrap().poll(&mut stepper, &clock).unwrap(); 98 | sleep(Duration::from_micros(2000)); 99 | } 100 | } 101 | 102 | pub fn wifi( 103 | modem: impl Peripheral

+ 'static, 104 | sysloop: EspSystemEventLoop, 105 | nvs: Option>, 106 | timer_service: EspTimerService, 107 | ) -> anyhow::Result>> { 108 | use futures::executor::block_on; 109 | let mut wifi = AsyncWifi::wrap( 110 | EspWifi::new(modem, sysloop.clone(), nvs)?, 111 | sysloop, 112 | timer_service.clone(), 113 | )?; 114 | 115 | block_on(connect_wifi(&mut wifi))?; 116 | 117 | let ip_info = wifi.wifi().sta_netif().get_ip_info()?; 118 | 119 | println!("Wifi DHCP info: {:?}", ip_info); 120 | 121 | EspPing::default().ping(ip_info.subnet.gateway, &embedded_svc::ping::Configuration::default())?; 122 | Ok(wifi) 123 | 124 | } 125 | 126 | async fn connect_wifi(wifi: &mut AsyncWifi>) -> anyhow::Result<()> { 127 | let wifi_configuration: Configuration = Configuration::Client(ClientConfiguration { 128 | ssid: SSID.into(), 129 | bssid: None, 130 | auth_method: AuthMethod::WPA2Personal, 131 | password: PASS.into(), 132 | channel: None, 133 | }); 134 | 135 | wifi.set_configuration(&wifi_configuration)?; 136 | 137 | wifi.start().await?; 138 | info!("Wifi started"); 139 | 140 | wifi.connect().await?; 141 | info!("Wifi connected"); 142 | 143 | wifi.wait_netif_up().await?; 144 | info!("Wifi netif up"); 145 | 146 | Ok(()) 147 | } -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "accel-stepper" 7 | version = "0.1.0" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "6b420075edf09a2878489824af5ad2e16dd4d2745c370dff3fbce2f8d11a8fcc" 10 | dependencies = [ 11 | "arrayvec", 12 | "libm", 13 | "void", 14 | ] 15 | 16 | [[package]] 17 | name = "adler" 18 | version = "1.0.2" 19 | source = "registry+https://github.com/rust-lang/crates.io-index" 20 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 21 | 22 | [[package]] 23 | name = "aho-corasick" 24 | version = "1.0.2" 25 | source = "registry+https://github.com/rust-lang/crates.io-index" 26 | checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" 27 | dependencies = [ 28 | "memchr", 29 | ] 30 | 31 | [[package]] 32 | name = "aligned" 33 | version = "0.4.1" 34 | source = "registry+https://github.com/rust-lang/crates.io-index" 35 | checksum = "80a21b9440a626c7fc8573a9e3d3a06b75c7c97754c2949bc7857b90353ca655" 36 | dependencies = [ 37 | "as-slice", 38 | ] 39 | 40 | [[package]] 41 | name = "android-tzdata" 42 | version = "0.1.1" 43 | source = "registry+https://github.com/rust-lang/crates.io-index" 44 | checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" 45 | 46 | [[package]] 47 | name = "android_system_properties" 48 | version = "0.1.5" 49 | source = "registry+https://github.com/rust-lang/crates.io-index" 50 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 51 | dependencies = [ 52 | "libc", 53 | ] 54 | 55 | [[package]] 56 | name = "anyhow" 57 | version = "1.0.72" 58 | source = "registry+https://github.com/rust-lang/crates.io-index" 59 | checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" 60 | 61 | [[package]] 62 | name = "arrayvec" 63 | version = "0.4.12" 64 | source = "registry+https://github.com/rust-lang/crates.io-index" 65 | checksum = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" 66 | dependencies = [ 67 | "nodrop", 68 | ] 69 | 70 | [[package]] 71 | name = "as-slice" 72 | version = "0.2.1" 73 | source = "registry+https://github.com/rust-lang/crates.io-index" 74 | checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516" 75 | dependencies = [ 76 | "stable_deref_trait", 77 | ] 78 | 79 | [[package]] 80 | name = "async-task" 81 | version = "4.4.0" 82 | source = "registry+https://github.com/rust-lang/crates.io-index" 83 | checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" 84 | 85 | [[package]] 86 | name = "atomic-polyfill" 87 | version = "0.1.11" 88 | source = "registry+https://github.com/rust-lang/crates.io-index" 89 | checksum = "e3ff7eb3f316534d83a8a2c3d1674ace8a5a71198eba31e2e2b597833f699b28" 90 | dependencies = [ 91 | "critical-section", 92 | ] 93 | 94 | [[package]] 95 | name = "atomic-polyfill" 96 | version = "1.0.3" 97 | source = "registry+https://github.com/rust-lang/crates.io-index" 98 | checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" 99 | dependencies = [ 100 | "critical-section", 101 | ] 102 | 103 | [[package]] 104 | name = "atomic-waker" 105 | version = "1.1.1" 106 | source = "registry+https://github.com/rust-lang/crates.io-index" 107 | checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" 108 | 109 | [[package]] 110 | name = "autocfg" 111 | version = "1.1.0" 112 | source = "registry+https://github.com/rust-lang/crates.io-index" 113 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 114 | 115 | [[package]] 116 | name = "base64" 117 | version = "0.21.2" 118 | source = "registry+https://github.com/rust-lang/crates.io-index" 119 | checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" 120 | 121 | [[package]] 122 | name = "bindgen" 123 | version = "0.63.0" 124 | source = "registry+https://github.com/rust-lang/crates.io-index" 125 | checksum = "36d860121800b2a9a94f9b5604b332d5cffb234ce17609ea479d723dbc9d3885" 126 | dependencies = [ 127 | "bitflags 1.3.2", 128 | "cexpr", 129 | "clang-sys", 130 | "lazy_static", 131 | "lazycell", 132 | "log", 133 | "peeking_take_while", 134 | "proc-macro2", 135 | "quote", 136 | "regex", 137 | "rustc-hash", 138 | "shlex", 139 | "syn 1.0.109", 140 | "which", 141 | ] 142 | 143 | [[package]] 144 | name = "bitflags" 145 | version = "1.3.2" 146 | source = "registry+https://github.com/rust-lang/crates.io-index" 147 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 148 | 149 | [[package]] 150 | name = "bitflags" 151 | version = "2.3.3" 152 | source = "registry+https://github.com/rust-lang/crates.io-index" 153 | checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" 154 | 155 | [[package]] 156 | name = "bstr" 157 | version = "1.6.0" 158 | source = "registry+https://github.com/rust-lang/crates.io-index" 159 | checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05" 160 | dependencies = [ 161 | "memchr", 162 | "serde", 163 | ] 164 | 165 | [[package]] 166 | name = "build-time" 167 | version = "0.1.3" 168 | source = "registry+https://github.com/rust-lang/crates.io-index" 169 | checksum = "f1219c19fc29b7bfd74b7968b420aff5bc951cf517800176e795d6b2300dd382" 170 | dependencies = [ 171 | "chrono", 172 | "once_cell", 173 | "proc-macro2", 174 | "quote", 175 | "syn 2.0.27", 176 | ] 177 | 178 | [[package]] 179 | name = "bumpalo" 180 | version = "3.13.0" 181 | source = "registry+https://github.com/rust-lang/crates.io-index" 182 | checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" 183 | 184 | [[package]] 185 | name = "byteorder" 186 | version = "1.4.3" 187 | source = "registry+https://github.com/rust-lang/crates.io-index" 188 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 189 | 190 | [[package]] 191 | name = "camino" 192 | version = "1.1.6" 193 | source = "registry+https://github.com/rust-lang/crates.io-index" 194 | checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" 195 | dependencies = [ 196 | "serde", 197 | ] 198 | 199 | [[package]] 200 | name = "cargo-platform" 201 | version = "0.1.3" 202 | source = "registry+https://github.com/rust-lang/crates.io-index" 203 | checksum = "2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479" 204 | dependencies = [ 205 | "serde", 206 | ] 207 | 208 | [[package]] 209 | name = "cargo_metadata" 210 | version = "0.15.4" 211 | source = "registry+https://github.com/rust-lang/crates.io-index" 212 | checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" 213 | dependencies = [ 214 | "camino", 215 | "cargo-platform", 216 | "semver", 217 | "serde", 218 | "serde_json", 219 | "thiserror", 220 | ] 221 | 222 | [[package]] 223 | name = "cargo_toml" 224 | version = "0.15.3" 225 | source = "registry+https://github.com/rust-lang/crates.io-index" 226 | checksum = "599aa35200ffff8f04c1925aa1acc92fa2e08874379ef42e210a80e527e60838" 227 | dependencies = [ 228 | "serde", 229 | "toml", 230 | ] 231 | 232 | [[package]] 233 | name = "cc" 234 | version = "1.0.79" 235 | source = "registry+https://github.com/rust-lang/crates.io-index" 236 | checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" 237 | 238 | [[package]] 239 | name = "cexpr" 240 | version = "0.6.0" 241 | source = "registry+https://github.com/rust-lang/crates.io-index" 242 | checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" 243 | dependencies = [ 244 | "nom", 245 | ] 246 | 247 | [[package]] 248 | name = "cfg-if" 249 | version = "1.0.0" 250 | source = "registry+https://github.com/rust-lang/crates.io-index" 251 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 252 | 253 | [[package]] 254 | name = "chrono" 255 | version = "0.4.26" 256 | source = "registry+https://github.com/rust-lang/crates.io-index" 257 | checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" 258 | dependencies = [ 259 | "android-tzdata", 260 | "iana-time-zone", 261 | "num-traits", 262 | "winapi", 263 | ] 264 | 265 | [[package]] 266 | name = "clang-sys" 267 | version = "1.6.1" 268 | source = "registry+https://github.com/rust-lang/crates.io-index" 269 | checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" 270 | dependencies = [ 271 | "glob", 272 | "libc", 273 | "libloading", 274 | ] 275 | 276 | [[package]] 277 | name = "cmake" 278 | version = "0.1.50" 279 | source = "registry+https://github.com/rust-lang/crates.io-index" 280 | checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" 281 | dependencies = [ 282 | "cc", 283 | ] 284 | 285 | [[package]] 286 | name = "const_format" 287 | version = "0.2.31" 288 | source = "registry+https://github.com/rust-lang/crates.io-index" 289 | checksum = "c990efc7a285731f9a4378d81aff2f0e85a2c8781a05ef0f8baa8dac54d0ff48" 290 | dependencies = [ 291 | "const_format_proc_macros", 292 | ] 293 | 294 | [[package]] 295 | name = "const_format_proc_macros" 296 | version = "0.2.31" 297 | source = "registry+https://github.com/rust-lang/crates.io-index" 298 | checksum = "e026b6ce194a874cb9cf32cd5772d1ef9767cc8fcb5765948d74f37a9d8b2bf6" 299 | dependencies = [ 300 | "proc-macro2", 301 | "quote", 302 | "unicode-xid", 303 | ] 304 | 305 | [[package]] 306 | name = "core-foundation-sys" 307 | version = "0.8.4" 308 | source = "registry+https://github.com/rust-lang/crates.io-index" 309 | checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" 310 | 311 | [[package]] 312 | name = "crc32fast" 313 | version = "1.3.2" 314 | source = "registry+https://github.com/rust-lang/crates.io-index" 315 | checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" 316 | dependencies = [ 317 | "cfg-if", 318 | ] 319 | 320 | [[package]] 321 | name = "critical-section" 322 | version = "1.1.1" 323 | source = "registry+https://github.com/rust-lang/crates.io-index" 324 | checksum = "6548a0ad5d2549e111e1f6a11a6c2e2d00ce6a3dafe22948d67c2b443f775e52" 325 | 326 | [[package]] 327 | name = "cvt" 328 | version = "0.1.2" 329 | source = "registry+https://github.com/rust-lang/crates.io-index" 330 | checksum = "d2ae9bf77fbf2d39ef573205d554d87e86c12f1994e9ea335b0651b9b278bcf1" 331 | dependencies = [ 332 | "cfg-if", 333 | ] 334 | 335 | [[package]] 336 | name = "darling" 337 | version = "0.20.3" 338 | source = "registry+https://github.com/rust-lang/crates.io-index" 339 | checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" 340 | dependencies = [ 341 | "darling_core", 342 | "darling_macro", 343 | ] 344 | 345 | [[package]] 346 | name = "darling_core" 347 | version = "0.20.3" 348 | source = "registry+https://github.com/rust-lang/crates.io-index" 349 | checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" 350 | dependencies = [ 351 | "fnv", 352 | "ident_case", 353 | "proc-macro2", 354 | "quote", 355 | "syn 2.0.27", 356 | ] 357 | 358 | [[package]] 359 | name = "darling_macro" 360 | version = "0.20.3" 361 | source = "registry+https://github.com/rust-lang/crates.io-index" 362 | checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" 363 | dependencies = [ 364 | "darling_core", 365 | "quote", 366 | "syn 2.0.27", 367 | ] 368 | 369 | [[package]] 370 | name = "defmt" 371 | version = "0.3.5" 372 | source = "registry+https://github.com/rust-lang/crates.io-index" 373 | checksum = "a8a2d011b2fee29fb7d659b83c43fce9a2cb4df453e16d441a51448e448f3f98" 374 | dependencies = [ 375 | "bitflags 1.3.2", 376 | "defmt-macros", 377 | ] 378 | 379 | [[package]] 380 | name = "defmt-macros" 381 | version = "0.3.6" 382 | source = "registry+https://github.com/rust-lang/crates.io-index" 383 | checksum = "54f0216f6c5acb5ae1a47050a6645024e6edafc2ee32d421955eccfef12ef92e" 384 | dependencies = [ 385 | "defmt-parser", 386 | "proc-macro-error", 387 | "proc-macro2", 388 | "quote", 389 | "syn 2.0.27", 390 | ] 391 | 392 | [[package]] 393 | name = "defmt-parser" 394 | version = "0.3.3" 395 | source = "registry+https://github.com/rust-lang/crates.io-index" 396 | checksum = "269924c02afd7f94bc4cecbfa5c379f6ffcf9766b3408fe63d22c728654eccd0" 397 | dependencies = [ 398 | "thiserror", 399 | ] 400 | 401 | [[package]] 402 | name = "edge-executor" 403 | version = "0.3.0" 404 | source = "registry+https://github.com/rust-lang/crates.io-index" 405 | checksum = "bc1d66feda51959c8bb07b752c20f1d061eceb178bc91b793a0b32c792c631cf" 406 | dependencies = [ 407 | "async-task", 408 | "heapless", 409 | "log", 410 | "waker-fn", 411 | ] 412 | 413 | [[package]] 414 | name = "either" 415 | version = "1.9.0" 416 | source = "registry+https://github.com/rust-lang/crates.io-index" 417 | checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" 418 | 419 | [[package]] 420 | name = "embassy-futures" 421 | version = "0.1.0" 422 | source = "registry+https://github.com/rust-lang/crates.io-index" 423 | checksum = "47e5367165d347c039360f784812f493b001583ab6a3dd8622f4ce9c30374ec3" 424 | 425 | [[package]] 426 | name = "embassy-sync" 427 | version = "0.2.0" 428 | source = "registry+https://github.com/rust-lang/crates.io-index" 429 | checksum = "a0dad296a6f70bfdc32ef52442a31f98c28e1608893c1cecc9b6f419bab005a0" 430 | dependencies = [ 431 | "cfg-if", 432 | "critical-section", 433 | "embedded-io", 434 | "futures-util", 435 | "heapless", 436 | ] 437 | 438 | [[package]] 439 | name = "embassy-time" 440 | version = "0.1.2" 441 | source = "registry+https://github.com/rust-lang/crates.io-index" 442 | checksum = "7a0461fa8de2cf03c4363a38f439a5d7e4cc16cd41947b51663ff4b2f155b902" 443 | dependencies = [ 444 | "atomic-polyfill 1.0.3", 445 | "cfg-if", 446 | "critical-section", 447 | "embedded-hal 0.2.7", 448 | "futures-util", 449 | "heapless", 450 | ] 451 | 452 | [[package]] 453 | name = "embedded-can" 454 | version = "0.4.1" 455 | source = "registry+https://github.com/rust-lang/crates.io-index" 456 | checksum = "e9d2e857f87ac832df68fa498d18ddc679175cf3d2e4aa893988e5601baf9438" 457 | dependencies = [ 458 | "nb 1.1.0", 459 | ] 460 | 461 | [[package]] 462 | name = "embedded-hal" 463 | version = "0.2.7" 464 | source = "registry+https://github.com/rust-lang/crates.io-index" 465 | checksum = "35949884794ad573cf46071e41c9b60efb0cb311e3ca01f7af807af1debc66ff" 466 | dependencies = [ 467 | "nb 0.1.3", 468 | "void", 469 | ] 470 | 471 | [[package]] 472 | name = "embedded-hal" 473 | version = "1.0.0-alpha.10" 474 | source = "registry+https://github.com/rust-lang/crates.io-index" 475 | checksum = "f65c4d073f5d91c66e629b216818a4c9747eeda0debedf2deda9a0a947e4e93b" 476 | 477 | [[package]] 478 | name = "embedded-hal-nb" 479 | version = "1.0.0-alpha.2" 480 | source = "registry+https://github.com/rust-lang/crates.io-index" 481 | checksum = "1465fffd56a95bbc105c17965bca1c1d5815027b1cc6bb183bc05d04563d065c" 482 | dependencies = [ 483 | "embedded-hal 1.0.0-alpha.10", 484 | "nb 1.1.0", 485 | ] 486 | 487 | [[package]] 488 | name = "embedded-io" 489 | version = "0.4.0" 490 | source = "registry+https://github.com/rust-lang/crates.io-index" 491 | checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" 492 | dependencies = [ 493 | "futures", 494 | ] 495 | 496 | [[package]] 497 | name = "embedded-svc" 498 | version = "0.25.3" 499 | source = "registry+https://github.com/rust-lang/crates.io-index" 500 | checksum = "adb928fd4f8e71dee7628bbab86b25df74c503fc5209cfeeb174a9806bb4fd11" 501 | dependencies = [ 502 | "anyhow", 503 | "atomic-waker", 504 | "defmt", 505 | "embedded-io", 506 | "enumset", 507 | "heapless", 508 | "no-std-net", 509 | "num_enum", 510 | "serde", 511 | "strum 0.23.0", 512 | ] 513 | 514 | [[package]] 515 | name = "embuild" 516 | version = "0.31.2" 517 | source = "registry+https://github.com/rust-lang/crates.io-index" 518 | checksum = "3ad838e9b86748e477f1d882c41777978947ca3a1f0cdde572234bc7dc68ed3d" 519 | dependencies = [ 520 | "anyhow", 521 | "bindgen", 522 | "bitflags 1.3.2", 523 | "cargo_toml", 524 | "cmake", 525 | "filetime", 526 | "globwalk", 527 | "home", 528 | "log", 529 | "remove_dir_all", 530 | "serde", 531 | "serde_json", 532 | "shlex", 533 | "strum 0.24.1", 534 | "tempfile", 535 | "thiserror", 536 | "toml", 537 | "ureq", 538 | "which", 539 | ] 540 | 541 | [[package]] 542 | name = "enumset" 543 | version = "1.1.2" 544 | source = "registry+https://github.com/rust-lang/crates.io-index" 545 | checksum = "e875f1719c16de097dee81ed675e2d9bb63096823ed3f0ca827b7dea3028bbbb" 546 | dependencies = [ 547 | "enumset_derive", 548 | ] 549 | 550 | [[package]] 551 | name = "enumset_derive" 552 | version = "0.8.1" 553 | source = "registry+https://github.com/rust-lang/crates.io-index" 554 | checksum = "e08b6c6ab82d70f08844964ba10c7babb716de2ecaeab9be5717918a5177d3af" 555 | dependencies = [ 556 | "darling", 557 | "proc-macro2", 558 | "quote", 559 | "syn 2.0.27", 560 | ] 561 | 562 | [[package]] 563 | name = "envy" 564 | version = "0.4.2" 565 | source = "registry+https://github.com/rust-lang/crates.io-index" 566 | checksum = "3f47e0157f2cb54f5ae1bd371b30a2ae4311e1c028f575cd4e81de7353215965" 567 | dependencies = [ 568 | "serde", 569 | ] 570 | 571 | [[package]] 572 | name = "equivalent" 573 | version = "1.0.1" 574 | source = "registry+https://github.com/rust-lang/crates.io-index" 575 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 576 | 577 | [[package]] 578 | name = "errno" 579 | version = "0.3.1" 580 | source = "registry+https://github.com/rust-lang/crates.io-index" 581 | checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" 582 | dependencies = [ 583 | "errno-dragonfly", 584 | "libc", 585 | "windows-sys 0.48.0", 586 | ] 587 | 588 | [[package]] 589 | name = "errno-dragonfly" 590 | version = "0.1.2" 591 | source = "registry+https://github.com/rust-lang/crates.io-index" 592 | checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" 593 | dependencies = [ 594 | "cc", 595 | "libc", 596 | ] 597 | 598 | [[package]] 599 | name = "esp-idf-hal" 600 | version = "0.41.2" 601 | source = "registry+https://github.com/rust-lang/crates.io-index" 602 | checksum = "ea0ed6e41edf280787a5325aae0c82d39b1fb5ae3199871cd164ae1a650704d6" 603 | dependencies = [ 604 | "anyhow", 605 | "atomic-waker", 606 | "critical-section", 607 | "edge-executor", 608 | "embassy-sync", 609 | "embedded-can", 610 | "embedded-hal 0.2.7", 611 | "embedded-hal 1.0.0-alpha.10", 612 | "embedded-hal-nb", 613 | "embuild", 614 | "enumset", 615 | "esp-idf-sys", 616 | "heapless", 617 | "nb 1.1.0", 618 | ] 619 | 620 | [[package]] 621 | name = "esp-idf-svc" 622 | version = "0.46.1" 623 | source = "registry+https://github.com/rust-lang/crates.io-index" 624 | checksum = "6765d2a6fd1e8850f28f80e00997e2456fcc41483836b206dc90df7ceba334ff" 625 | dependencies = [ 626 | "anyhow", 627 | "embassy-futures", 628 | "embassy-sync", 629 | "embassy-time", 630 | "embedded-svc", 631 | "embuild", 632 | "enumset", 633 | "esp-idf-hal", 634 | "esp-idf-sys", 635 | "heapless", 636 | "log", 637 | "uncased", 638 | ] 639 | 640 | [[package]] 641 | name = "esp-idf-sys" 642 | version = "0.33.1" 643 | source = "registry+https://github.com/rust-lang/crates.io-index" 644 | checksum = "0d793b605e8037907f0e6697b0995a355238f065f321dd389fdf866aa9f8d140" 645 | dependencies = [ 646 | "anyhow", 647 | "bindgen", 648 | "build-time", 649 | "cargo_metadata", 650 | "const_format", 651 | "embuild", 652 | "envy", 653 | "libc", 654 | "regex", 655 | "serde", 656 | "strum 0.24.1", 657 | ] 658 | 659 | [[package]] 660 | name = "esp32-video" 661 | version = "0.1.0" 662 | dependencies = [ 663 | "accel-stepper", 664 | "anyhow", 665 | "embedded-svc", 666 | "embuild", 667 | "esp-idf-hal", 668 | "esp-idf-svc", 669 | "esp-idf-sys", 670 | "futures", 671 | "log", 672 | ] 673 | 674 | [[package]] 675 | name = "fastrand" 676 | version = "2.0.0" 677 | source = "registry+https://github.com/rust-lang/crates.io-index" 678 | checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" 679 | 680 | [[package]] 681 | name = "filetime" 682 | version = "0.2.21" 683 | source = "registry+https://github.com/rust-lang/crates.io-index" 684 | checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" 685 | dependencies = [ 686 | "cfg-if", 687 | "libc", 688 | "redox_syscall 0.2.16", 689 | "windows-sys 0.48.0", 690 | ] 691 | 692 | [[package]] 693 | name = "flate2" 694 | version = "1.0.26" 695 | source = "registry+https://github.com/rust-lang/crates.io-index" 696 | checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" 697 | dependencies = [ 698 | "crc32fast", 699 | "miniz_oxide", 700 | ] 701 | 702 | [[package]] 703 | name = "fnv" 704 | version = "1.0.7" 705 | source = "registry+https://github.com/rust-lang/crates.io-index" 706 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 707 | 708 | [[package]] 709 | name = "form_urlencoded" 710 | version = "1.2.0" 711 | source = "registry+https://github.com/rust-lang/crates.io-index" 712 | checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" 713 | dependencies = [ 714 | "percent-encoding", 715 | ] 716 | 717 | [[package]] 718 | name = "fs_at" 719 | version = "0.1.8" 720 | source = "registry+https://github.com/rust-lang/crates.io-index" 721 | checksum = "15550ecca96ea332ec143fb450701074143b70d358e50b32b1f847ccff2e1cf7" 722 | dependencies = [ 723 | "aligned", 724 | "cfg-if", 725 | "cvt", 726 | "libc", 727 | "nix", 728 | "windows-sys 0.48.0", 729 | ] 730 | 731 | [[package]] 732 | name = "futures" 733 | version = "0.3.28" 734 | source = "registry+https://github.com/rust-lang/crates.io-index" 735 | checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" 736 | dependencies = [ 737 | "futures-channel", 738 | "futures-core", 739 | "futures-executor", 740 | "futures-io", 741 | "futures-sink", 742 | "futures-task", 743 | "futures-util", 744 | ] 745 | 746 | [[package]] 747 | name = "futures-channel" 748 | version = "0.3.28" 749 | source = "registry+https://github.com/rust-lang/crates.io-index" 750 | checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" 751 | dependencies = [ 752 | "futures-core", 753 | "futures-sink", 754 | ] 755 | 756 | [[package]] 757 | name = "futures-core" 758 | version = "0.3.28" 759 | source = "registry+https://github.com/rust-lang/crates.io-index" 760 | checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" 761 | 762 | [[package]] 763 | name = "futures-executor" 764 | version = "0.3.28" 765 | source = "registry+https://github.com/rust-lang/crates.io-index" 766 | checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" 767 | dependencies = [ 768 | "futures-core", 769 | "futures-task", 770 | "futures-util", 771 | ] 772 | 773 | [[package]] 774 | name = "futures-io" 775 | version = "0.3.28" 776 | source = "registry+https://github.com/rust-lang/crates.io-index" 777 | checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" 778 | 779 | [[package]] 780 | name = "futures-macro" 781 | version = "0.3.28" 782 | source = "registry+https://github.com/rust-lang/crates.io-index" 783 | checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" 784 | dependencies = [ 785 | "proc-macro2", 786 | "quote", 787 | "syn 2.0.27", 788 | ] 789 | 790 | [[package]] 791 | name = "futures-sink" 792 | version = "0.3.28" 793 | source = "registry+https://github.com/rust-lang/crates.io-index" 794 | checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" 795 | 796 | [[package]] 797 | name = "futures-task" 798 | version = "0.3.28" 799 | source = "registry+https://github.com/rust-lang/crates.io-index" 800 | checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" 801 | 802 | [[package]] 803 | name = "futures-util" 804 | version = "0.3.28" 805 | source = "registry+https://github.com/rust-lang/crates.io-index" 806 | checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" 807 | dependencies = [ 808 | "futures-channel", 809 | "futures-core", 810 | "futures-io", 811 | "futures-macro", 812 | "futures-sink", 813 | "futures-task", 814 | "memchr", 815 | "pin-project-lite", 816 | "pin-utils", 817 | "slab", 818 | ] 819 | 820 | [[package]] 821 | name = "glob" 822 | version = "0.3.1" 823 | source = "registry+https://github.com/rust-lang/crates.io-index" 824 | checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" 825 | 826 | [[package]] 827 | name = "globset" 828 | version = "0.4.12" 829 | source = "registry+https://github.com/rust-lang/crates.io-index" 830 | checksum = "aca8bbd8e0707c1887a8bbb7e6b40e228f251ff5d62c8220a4a7a53c73aff006" 831 | dependencies = [ 832 | "aho-corasick", 833 | "bstr", 834 | "fnv", 835 | "log", 836 | "regex", 837 | ] 838 | 839 | [[package]] 840 | name = "globwalk" 841 | version = "0.8.1" 842 | source = "registry+https://github.com/rust-lang/crates.io-index" 843 | checksum = "93e3af942408868f6934a7b85134a3230832b9977cf66125df2f9edcfce4ddcc" 844 | dependencies = [ 845 | "bitflags 1.3.2", 846 | "ignore", 847 | "walkdir", 848 | ] 849 | 850 | [[package]] 851 | name = "hash32" 852 | version = "0.2.1" 853 | source = "registry+https://github.com/rust-lang/crates.io-index" 854 | checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" 855 | dependencies = [ 856 | "byteorder", 857 | ] 858 | 859 | [[package]] 860 | name = "hashbrown" 861 | version = "0.14.0" 862 | source = "registry+https://github.com/rust-lang/crates.io-index" 863 | checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" 864 | 865 | [[package]] 866 | name = "heapless" 867 | version = "0.7.16" 868 | source = "registry+https://github.com/rust-lang/crates.io-index" 869 | checksum = "db04bc24a18b9ea980628ecf00e6c0264f3c1426dac36c00cb49b6fbad8b0743" 870 | dependencies = [ 871 | "atomic-polyfill 0.1.11", 872 | "hash32", 873 | "rustc_version", 874 | "spin 0.9.8", 875 | "stable_deref_trait", 876 | ] 877 | 878 | [[package]] 879 | name = "heck" 880 | version = "0.3.3" 881 | source = "registry+https://github.com/rust-lang/crates.io-index" 882 | checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" 883 | dependencies = [ 884 | "unicode-segmentation", 885 | ] 886 | 887 | [[package]] 888 | name = "heck" 889 | version = "0.4.1" 890 | source = "registry+https://github.com/rust-lang/crates.io-index" 891 | checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 892 | 893 | [[package]] 894 | name = "home" 895 | version = "0.5.5" 896 | source = "registry+https://github.com/rust-lang/crates.io-index" 897 | checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" 898 | dependencies = [ 899 | "windows-sys 0.48.0", 900 | ] 901 | 902 | [[package]] 903 | name = "iana-time-zone" 904 | version = "0.1.57" 905 | source = "registry+https://github.com/rust-lang/crates.io-index" 906 | checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" 907 | dependencies = [ 908 | "android_system_properties", 909 | "core-foundation-sys", 910 | "iana-time-zone-haiku", 911 | "js-sys", 912 | "wasm-bindgen", 913 | "windows", 914 | ] 915 | 916 | [[package]] 917 | name = "iana-time-zone-haiku" 918 | version = "0.1.2" 919 | source = "registry+https://github.com/rust-lang/crates.io-index" 920 | checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 921 | dependencies = [ 922 | "cc", 923 | ] 924 | 925 | [[package]] 926 | name = "ident_case" 927 | version = "1.0.1" 928 | source = "registry+https://github.com/rust-lang/crates.io-index" 929 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 930 | 931 | [[package]] 932 | name = "idna" 933 | version = "0.4.0" 934 | source = "registry+https://github.com/rust-lang/crates.io-index" 935 | checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" 936 | dependencies = [ 937 | "unicode-bidi", 938 | "unicode-normalization", 939 | ] 940 | 941 | [[package]] 942 | name = "ignore" 943 | version = "0.4.20" 944 | source = "registry+https://github.com/rust-lang/crates.io-index" 945 | checksum = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492" 946 | dependencies = [ 947 | "globset", 948 | "lazy_static", 949 | "log", 950 | "memchr", 951 | "regex", 952 | "same-file", 953 | "thread_local", 954 | "walkdir", 955 | "winapi-util", 956 | ] 957 | 958 | [[package]] 959 | name = "indexmap" 960 | version = "2.0.0" 961 | source = "registry+https://github.com/rust-lang/crates.io-index" 962 | checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" 963 | dependencies = [ 964 | "equivalent", 965 | "hashbrown", 966 | ] 967 | 968 | [[package]] 969 | name = "itoa" 970 | version = "1.0.9" 971 | source = "registry+https://github.com/rust-lang/crates.io-index" 972 | checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" 973 | 974 | [[package]] 975 | name = "js-sys" 976 | version = "0.3.64" 977 | source = "registry+https://github.com/rust-lang/crates.io-index" 978 | checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" 979 | dependencies = [ 980 | "wasm-bindgen", 981 | ] 982 | 983 | [[package]] 984 | name = "lazy_static" 985 | version = "1.4.0" 986 | source = "registry+https://github.com/rust-lang/crates.io-index" 987 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 988 | 989 | [[package]] 990 | name = "lazycell" 991 | version = "1.3.0" 992 | source = "registry+https://github.com/rust-lang/crates.io-index" 993 | checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" 994 | 995 | [[package]] 996 | name = "libc" 997 | version = "0.2.147" 998 | source = "registry+https://github.com/rust-lang/crates.io-index" 999 | checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" 1000 | 1001 | [[package]] 1002 | name = "libloading" 1003 | version = "0.7.4" 1004 | source = "registry+https://github.com/rust-lang/crates.io-index" 1005 | checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" 1006 | dependencies = [ 1007 | "cfg-if", 1008 | "winapi", 1009 | ] 1010 | 1011 | [[package]] 1012 | name = "libm" 1013 | version = "0.1.4" 1014 | source = "registry+https://github.com/rust-lang/crates.io-index" 1015 | checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" 1016 | 1017 | [[package]] 1018 | name = "linux-raw-sys" 1019 | version = "0.4.3" 1020 | source = "registry+https://github.com/rust-lang/crates.io-index" 1021 | checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" 1022 | 1023 | [[package]] 1024 | name = "lock_api" 1025 | version = "0.4.10" 1026 | source = "registry+https://github.com/rust-lang/crates.io-index" 1027 | checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" 1028 | dependencies = [ 1029 | "autocfg", 1030 | "scopeguard", 1031 | ] 1032 | 1033 | [[package]] 1034 | name = "log" 1035 | version = "0.4.19" 1036 | source = "registry+https://github.com/rust-lang/crates.io-index" 1037 | checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" 1038 | 1039 | [[package]] 1040 | name = "memchr" 1041 | version = "2.5.0" 1042 | source = "registry+https://github.com/rust-lang/crates.io-index" 1043 | checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" 1044 | 1045 | [[package]] 1046 | name = "minimal-lexical" 1047 | version = "0.2.1" 1048 | source = "registry+https://github.com/rust-lang/crates.io-index" 1049 | checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 1050 | 1051 | [[package]] 1052 | name = "miniz_oxide" 1053 | version = "0.7.1" 1054 | source = "registry+https://github.com/rust-lang/crates.io-index" 1055 | checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" 1056 | dependencies = [ 1057 | "adler", 1058 | ] 1059 | 1060 | [[package]] 1061 | name = "nb" 1062 | version = "0.1.3" 1063 | source = "registry+https://github.com/rust-lang/crates.io-index" 1064 | checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f" 1065 | dependencies = [ 1066 | "nb 1.1.0", 1067 | ] 1068 | 1069 | [[package]] 1070 | name = "nb" 1071 | version = "1.1.0" 1072 | source = "registry+https://github.com/rust-lang/crates.io-index" 1073 | checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d" 1074 | 1075 | [[package]] 1076 | name = "nix" 1077 | version = "0.26.2" 1078 | source = "registry+https://github.com/rust-lang/crates.io-index" 1079 | checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" 1080 | dependencies = [ 1081 | "bitflags 1.3.2", 1082 | "cfg-if", 1083 | "libc", 1084 | "static_assertions", 1085 | ] 1086 | 1087 | [[package]] 1088 | name = "no-std-net" 1089 | version = "0.5.0" 1090 | source = "registry+https://github.com/rust-lang/crates.io-index" 1091 | checksum = "1bcece43b12349917e096cddfa66107277f123e6c96a5aea78711dc601a47152" 1092 | 1093 | [[package]] 1094 | name = "nodrop" 1095 | version = "0.1.14" 1096 | source = "registry+https://github.com/rust-lang/crates.io-index" 1097 | checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" 1098 | 1099 | [[package]] 1100 | name = "nom" 1101 | version = "7.1.3" 1102 | source = "registry+https://github.com/rust-lang/crates.io-index" 1103 | checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 1104 | dependencies = [ 1105 | "memchr", 1106 | "minimal-lexical", 1107 | ] 1108 | 1109 | [[package]] 1110 | name = "normpath" 1111 | version = "1.1.1" 1112 | source = "registry+https://github.com/rust-lang/crates.io-index" 1113 | checksum = "ec60c60a693226186f5d6edf073232bfb6464ed97eb22cf3b01c1e8198fd97f5" 1114 | dependencies = [ 1115 | "windows-sys 0.48.0", 1116 | ] 1117 | 1118 | [[package]] 1119 | name = "num-traits" 1120 | version = "0.2.16" 1121 | source = "registry+https://github.com/rust-lang/crates.io-index" 1122 | checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" 1123 | dependencies = [ 1124 | "autocfg", 1125 | ] 1126 | 1127 | [[package]] 1128 | name = "num_enum" 1129 | version = "0.5.11" 1130 | source = "registry+https://github.com/rust-lang/crates.io-index" 1131 | checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" 1132 | dependencies = [ 1133 | "num_enum_derive", 1134 | ] 1135 | 1136 | [[package]] 1137 | name = "num_enum_derive" 1138 | version = "0.5.11" 1139 | source = "registry+https://github.com/rust-lang/crates.io-index" 1140 | checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" 1141 | dependencies = [ 1142 | "proc-macro-crate", 1143 | "proc-macro2", 1144 | "quote", 1145 | "syn 1.0.109", 1146 | ] 1147 | 1148 | [[package]] 1149 | name = "once_cell" 1150 | version = "1.18.0" 1151 | source = "registry+https://github.com/rust-lang/crates.io-index" 1152 | checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" 1153 | 1154 | [[package]] 1155 | name = "peeking_take_while" 1156 | version = "0.1.2" 1157 | source = "registry+https://github.com/rust-lang/crates.io-index" 1158 | checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" 1159 | 1160 | [[package]] 1161 | name = "percent-encoding" 1162 | version = "2.3.0" 1163 | source = "registry+https://github.com/rust-lang/crates.io-index" 1164 | checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" 1165 | 1166 | [[package]] 1167 | name = "pin-project-lite" 1168 | version = "0.2.10" 1169 | source = "registry+https://github.com/rust-lang/crates.io-index" 1170 | checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" 1171 | 1172 | [[package]] 1173 | name = "pin-utils" 1174 | version = "0.1.0" 1175 | source = "registry+https://github.com/rust-lang/crates.io-index" 1176 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1177 | 1178 | [[package]] 1179 | name = "proc-macro-crate" 1180 | version = "1.3.1" 1181 | source = "registry+https://github.com/rust-lang/crates.io-index" 1182 | checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" 1183 | dependencies = [ 1184 | "once_cell", 1185 | "toml_edit", 1186 | ] 1187 | 1188 | [[package]] 1189 | name = "proc-macro-error" 1190 | version = "1.0.4" 1191 | source = "registry+https://github.com/rust-lang/crates.io-index" 1192 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 1193 | dependencies = [ 1194 | "proc-macro-error-attr", 1195 | "proc-macro2", 1196 | "quote", 1197 | "syn 1.0.109", 1198 | "version_check", 1199 | ] 1200 | 1201 | [[package]] 1202 | name = "proc-macro-error-attr" 1203 | version = "1.0.4" 1204 | source = "registry+https://github.com/rust-lang/crates.io-index" 1205 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 1206 | dependencies = [ 1207 | "proc-macro2", 1208 | "quote", 1209 | "version_check", 1210 | ] 1211 | 1212 | [[package]] 1213 | name = "proc-macro2" 1214 | version = "1.0.66" 1215 | source = "registry+https://github.com/rust-lang/crates.io-index" 1216 | checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" 1217 | dependencies = [ 1218 | "unicode-ident", 1219 | ] 1220 | 1221 | [[package]] 1222 | name = "quote" 1223 | version = "1.0.32" 1224 | source = "registry+https://github.com/rust-lang/crates.io-index" 1225 | checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" 1226 | dependencies = [ 1227 | "proc-macro2", 1228 | ] 1229 | 1230 | [[package]] 1231 | name = "redox_syscall" 1232 | version = "0.2.16" 1233 | source = "registry+https://github.com/rust-lang/crates.io-index" 1234 | checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 1235 | dependencies = [ 1236 | "bitflags 1.3.2", 1237 | ] 1238 | 1239 | [[package]] 1240 | name = "redox_syscall" 1241 | version = "0.3.5" 1242 | source = "registry+https://github.com/rust-lang/crates.io-index" 1243 | checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" 1244 | dependencies = [ 1245 | "bitflags 1.3.2", 1246 | ] 1247 | 1248 | [[package]] 1249 | name = "regex" 1250 | version = "1.9.1" 1251 | source = "registry+https://github.com/rust-lang/crates.io-index" 1252 | checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" 1253 | dependencies = [ 1254 | "aho-corasick", 1255 | "memchr", 1256 | "regex-automata", 1257 | "regex-syntax", 1258 | ] 1259 | 1260 | [[package]] 1261 | name = "regex-automata" 1262 | version = "0.3.4" 1263 | source = "registry+https://github.com/rust-lang/crates.io-index" 1264 | checksum = "b7b6d6190b7594385f61bd3911cd1be99dfddcfc365a4160cc2ab5bff4aed294" 1265 | dependencies = [ 1266 | "aho-corasick", 1267 | "memchr", 1268 | "regex-syntax", 1269 | ] 1270 | 1271 | [[package]] 1272 | name = "regex-syntax" 1273 | version = "0.7.4" 1274 | source = "registry+https://github.com/rust-lang/crates.io-index" 1275 | checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" 1276 | 1277 | [[package]] 1278 | name = "remove_dir_all" 1279 | version = "0.8.2" 1280 | source = "registry+https://github.com/rust-lang/crates.io-index" 1281 | checksum = "23895cfadc1917fed9c6ed76a8c2903615fa3704f7493ff82b364c6540acc02b" 1282 | dependencies = [ 1283 | "aligned", 1284 | "cfg-if", 1285 | "cvt", 1286 | "fs_at", 1287 | "lazy_static", 1288 | "libc", 1289 | "normpath", 1290 | "windows-sys 0.45.0", 1291 | ] 1292 | 1293 | [[package]] 1294 | name = "ring" 1295 | version = "0.16.20" 1296 | source = "registry+https://github.com/rust-lang/crates.io-index" 1297 | checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" 1298 | dependencies = [ 1299 | "cc", 1300 | "libc", 1301 | "once_cell", 1302 | "spin 0.5.2", 1303 | "untrusted", 1304 | "web-sys", 1305 | "winapi", 1306 | ] 1307 | 1308 | [[package]] 1309 | name = "rustc-hash" 1310 | version = "1.1.0" 1311 | source = "registry+https://github.com/rust-lang/crates.io-index" 1312 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 1313 | 1314 | [[package]] 1315 | name = "rustc_version" 1316 | version = "0.4.0" 1317 | source = "registry+https://github.com/rust-lang/crates.io-index" 1318 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 1319 | dependencies = [ 1320 | "semver", 1321 | ] 1322 | 1323 | [[package]] 1324 | name = "rustix" 1325 | version = "0.38.4" 1326 | source = "registry+https://github.com/rust-lang/crates.io-index" 1327 | checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5" 1328 | dependencies = [ 1329 | "bitflags 2.3.3", 1330 | "errno", 1331 | "libc", 1332 | "linux-raw-sys", 1333 | "windows-sys 0.48.0", 1334 | ] 1335 | 1336 | [[package]] 1337 | name = "rustls" 1338 | version = "0.21.5" 1339 | source = "registry+https://github.com/rust-lang/crates.io-index" 1340 | checksum = "79ea77c539259495ce8ca47f53e66ae0330a8819f67e23ac96ca02f50e7b7d36" 1341 | dependencies = [ 1342 | "log", 1343 | "ring", 1344 | "rustls-webpki 0.101.2", 1345 | "sct", 1346 | ] 1347 | 1348 | [[package]] 1349 | name = "rustls-webpki" 1350 | version = "0.100.1" 1351 | source = "registry+https://github.com/rust-lang/crates.io-index" 1352 | checksum = "d6207cd5ed3d8dca7816f8f3725513a34609c0c765bf652b8c3cb4cfd87db46b" 1353 | dependencies = [ 1354 | "ring", 1355 | "untrusted", 1356 | ] 1357 | 1358 | [[package]] 1359 | name = "rustls-webpki" 1360 | version = "0.101.2" 1361 | source = "registry+https://github.com/rust-lang/crates.io-index" 1362 | checksum = "513722fd73ad80a71f72b61009ea1b584bcfa1483ca93949c8f290298837fa59" 1363 | dependencies = [ 1364 | "ring", 1365 | "untrusted", 1366 | ] 1367 | 1368 | [[package]] 1369 | name = "rustversion" 1370 | version = "1.0.14" 1371 | source = "registry+https://github.com/rust-lang/crates.io-index" 1372 | checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" 1373 | 1374 | [[package]] 1375 | name = "ryu" 1376 | version = "1.0.15" 1377 | source = "registry+https://github.com/rust-lang/crates.io-index" 1378 | checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" 1379 | 1380 | [[package]] 1381 | name = "same-file" 1382 | version = "1.0.6" 1383 | source = "registry+https://github.com/rust-lang/crates.io-index" 1384 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 1385 | dependencies = [ 1386 | "winapi-util", 1387 | ] 1388 | 1389 | [[package]] 1390 | name = "scopeguard" 1391 | version = "1.2.0" 1392 | source = "registry+https://github.com/rust-lang/crates.io-index" 1393 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 1394 | 1395 | [[package]] 1396 | name = "sct" 1397 | version = "0.7.0" 1398 | source = "registry+https://github.com/rust-lang/crates.io-index" 1399 | checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" 1400 | dependencies = [ 1401 | "ring", 1402 | "untrusted", 1403 | ] 1404 | 1405 | [[package]] 1406 | name = "semver" 1407 | version = "1.0.18" 1408 | source = "registry+https://github.com/rust-lang/crates.io-index" 1409 | checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" 1410 | dependencies = [ 1411 | "serde", 1412 | ] 1413 | 1414 | [[package]] 1415 | name = "serde" 1416 | version = "1.0.178" 1417 | source = "registry+https://github.com/rust-lang/crates.io-index" 1418 | checksum = "60363bdd39a7be0266a520dab25fdc9241d2f987b08a01e01f0ec6d06a981348" 1419 | dependencies = [ 1420 | "serde_derive", 1421 | ] 1422 | 1423 | [[package]] 1424 | name = "serde_derive" 1425 | version = "1.0.178" 1426 | source = "registry+https://github.com/rust-lang/crates.io-index" 1427 | checksum = "f28482318d6641454cb273da158647922d1be6b5a2fcc6165cd89ebdd7ed576b" 1428 | dependencies = [ 1429 | "proc-macro2", 1430 | "quote", 1431 | "syn 2.0.27", 1432 | ] 1433 | 1434 | [[package]] 1435 | name = "serde_json" 1436 | version = "1.0.104" 1437 | source = "registry+https://github.com/rust-lang/crates.io-index" 1438 | checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" 1439 | dependencies = [ 1440 | "itoa", 1441 | "ryu", 1442 | "serde", 1443 | ] 1444 | 1445 | [[package]] 1446 | name = "serde_spanned" 1447 | version = "0.6.3" 1448 | source = "registry+https://github.com/rust-lang/crates.io-index" 1449 | checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" 1450 | dependencies = [ 1451 | "serde", 1452 | ] 1453 | 1454 | [[package]] 1455 | name = "shlex" 1456 | version = "1.1.0" 1457 | source = "registry+https://github.com/rust-lang/crates.io-index" 1458 | checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" 1459 | 1460 | [[package]] 1461 | name = "slab" 1462 | version = "0.4.8" 1463 | source = "registry+https://github.com/rust-lang/crates.io-index" 1464 | checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" 1465 | dependencies = [ 1466 | "autocfg", 1467 | ] 1468 | 1469 | [[package]] 1470 | name = "spin" 1471 | version = "0.5.2" 1472 | source = "registry+https://github.com/rust-lang/crates.io-index" 1473 | checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 1474 | 1475 | [[package]] 1476 | name = "spin" 1477 | version = "0.9.8" 1478 | source = "registry+https://github.com/rust-lang/crates.io-index" 1479 | checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 1480 | dependencies = [ 1481 | "lock_api", 1482 | ] 1483 | 1484 | [[package]] 1485 | name = "stable_deref_trait" 1486 | version = "1.2.0" 1487 | source = "registry+https://github.com/rust-lang/crates.io-index" 1488 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 1489 | 1490 | [[package]] 1491 | name = "static_assertions" 1492 | version = "1.1.0" 1493 | source = "registry+https://github.com/rust-lang/crates.io-index" 1494 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 1495 | 1496 | [[package]] 1497 | name = "strum" 1498 | version = "0.23.0" 1499 | source = "registry+https://github.com/rust-lang/crates.io-index" 1500 | checksum = "cae14b91c7d11c9a851d3fbc80a963198998c2a64eec840477fa92d8ce9b70bb" 1501 | dependencies = [ 1502 | "strum_macros 0.23.1", 1503 | ] 1504 | 1505 | [[package]] 1506 | name = "strum" 1507 | version = "0.24.1" 1508 | source = "registry+https://github.com/rust-lang/crates.io-index" 1509 | checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" 1510 | dependencies = [ 1511 | "strum_macros 0.24.3", 1512 | ] 1513 | 1514 | [[package]] 1515 | name = "strum_macros" 1516 | version = "0.23.1" 1517 | source = "registry+https://github.com/rust-lang/crates.io-index" 1518 | checksum = "5bb0dc7ee9c15cea6199cde9a127fa16a4c5819af85395457ad72d68edc85a38" 1519 | dependencies = [ 1520 | "heck 0.3.3", 1521 | "proc-macro2", 1522 | "quote", 1523 | "rustversion", 1524 | "syn 1.0.109", 1525 | ] 1526 | 1527 | [[package]] 1528 | name = "strum_macros" 1529 | version = "0.24.3" 1530 | source = "registry+https://github.com/rust-lang/crates.io-index" 1531 | checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" 1532 | dependencies = [ 1533 | "heck 0.4.1", 1534 | "proc-macro2", 1535 | "quote", 1536 | "rustversion", 1537 | "syn 1.0.109", 1538 | ] 1539 | 1540 | [[package]] 1541 | name = "syn" 1542 | version = "1.0.109" 1543 | source = "registry+https://github.com/rust-lang/crates.io-index" 1544 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 1545 | dependencies = [ 1546 | "proc-macro2", 1547 | "quote", 1548 | "unicode-ident", 1549 | ] 1550 | 1551 | [[package]] 1552 | name = "syn" 1553 | version = "2.0.27" 1554 | source = "registry+https://github.com/rust-lang/crates.io-index" 1555 | checksum = "b60f673f44a8255b9c8c657daf66a596d435f2da81a555b06dc644d080ba45e0" 1556 | dependencies = [ 1557 | "proc-macro2", 1558 | "quote", 1559 | "unicode-ident", 1560 | ] 1561 | 1562 | [[package]] 1563 | name = "tempfile" 1564 | version = "3.7.0" 1565 | source = "registry+https://github.com/rust-lang/crates.io-index" 1566 | checksum = "5486094ee78b2e5038a6382ed7645bc084dc2ec433426ca4c3cb61e2007b8998" 1567 | dependencies = [ 1568 | "cfg-if", 1569 | "fastrand", 1570 | "redox_syscall 0.3.5", 1571 | "rustix", 1572 | "windows-sys 0.48.0", 1573 | ] 1574 | 1575 | [[package]] 1576 | name = "thiserror" 1577 | version = "1.0.44" 1578 | source = "registry+https://github.com/rust-lang/crates.io-index" 1579 | checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" 1580 | dependencies = [ 1581 | "thiserror-impl", 1582 | ] 1583 | 1584 | [[package]] 1585 | name = "thiserror-impl" 1586 | version = "1.0.44" 1587 | source = "registry+https://github.com/rust-lang/crates.io-index" 1588 | checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" 1589 | dependencies = [ 1590 | "proc-macro2", 1591 | "quote", 1592 | "syn 2.0.27", 1593 | ] 1594 | 1595 | [[package]] 1596 | name = "thread_local" 1597 | version = "1.1.7" 1598 | source = "registry+https://github.com/rust-lang/crates.io-index" 1599 | checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" 1600 | dependencies = [ 1601 | "cfg-if", 1602 | "once_cell", 1603 | ] 1604 | 1605 | [[package]] 1606 | name = "tinyvec" 1607 | version = "1.6.0" 1608 | source = "registry+https://github.com/rust-lang/crates.io-index" 1609 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 1610 | dependencies = [ 1611 | "tinyvec_macros", 1612 | ] 1613 | 1614 | [[package]] 1615 | name = "tinyvec_macros" 1616 | version = "0.1.1" 1617 | source = "registry+https://github.com/rust-lang/crates.io-index" 1618 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 1619 | 1620 | [[package]] 1621 | name = "toml" 1622 | version = "0.7.6" 1623 | source = "registry+https://github.com/rust-lang/crates.io-index" 1624 | checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" 1625 | dependencies = [ 1626 | "serde", 1627 | "serde_spanned", 1628 | "toml_datetime", 1629 | "toml_edit", 1630 | ] 1631 | 1632 | [[package]] 1633 | name = "toml_datetime" 1634 | version = "0.6.3" 1635 | source = "registry+https://github.com/rust-lang/crates.io-index" 1636 | checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" 1637 | dependencies = [ 1638 | "serde", 1639 | ] 1640 | 1641 | [[package]] 1642 | name = "toml_edit" 1643 | version = "0.19.14" 1644 | source = "registry+https://github.com/rust-lang/crates.io-index" 1645 | checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" 1646 | dependencies = [ 1647 | "indexmap", 1648 | "serde", 1649 | "serde_spanned", 1650 | "toml_datetime", 1651 | "winnow", 1652 | ] 1653 | 1654 | [[package]] 1655 | name = "uncased" 1656 | version = "0.9.9" 1657 | source = "registry+https://github.com/rust-lang/crates.io-index" 1658 | checksum = "9b9bc53168a4be7402ab86c3aad243a84dd7381d09be0eddc81280c1da95ca68" 1659 | dependencies = [ 1660 | "version_check", 1661 | ] 1662 | 1663 | [[package]] 1664 | name = "unicode-bidi" 1665 | version = "0.3.13" 1666 | source = "registry+https://github.com/rust-lang/crates.io-index" 1667 | checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" 1668 | 1669 | [[package]] 1670 | name = "unicode-ident" 1671 | version = "1.0.11" 1672 | source = "registry+https://github.com/rust-lang/crates.io-index" 1673 | checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" 1674 | 1675 | [[package]] 1676 | name = "unicode-normalization" 1677 | version = "0.1.22" 1678 | source = "registry+https://github.com/rust-lang/crates.io-index" 1679 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 1680 | dependencies = [ 1681 | "tinyvec", 1682 | ] 1683 | 1684 | [[package]] 1685 | name = "unicode-segmentation" 1686 | version = "1.10.1" 1687 | source = "registry+https://github.com/rust-lang/crates.io-index" 1688 | checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" 1689 | 1690 | [[package]] 1691 | name = "unicode-xid" 1692 | version = "0.2.4" 1693 | source = "registry+https://github.com/rust-lang/crates.io-index" 1694 | checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" 1695 | 1696 | [[package]] 1697 | name = "untrusted" 1698 | version = "0.7.1" 1699 | source = "registry+https://github.com/rust-lang/crates.io-index" 1700 | checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" 1701 | 1702 | [[package]] 1703 | name = "ureq" 1704 | version = "2.7.1" 1705 | source = "registry+https://github.com/rust-lang/crates.io-index" 1706 | checksum = "0b11c96ac7ee530603dcdf68ed1557050f374ce55a5a07193ebf8cbc9f8927e9" 1707 | dependencies = [ 1708 | "base64", 1709 | "flate2", 1710 | "log", 1711 | "once_cell", 1712 | "rustls", 1713 | "rustls-webpki 0.100.1", 1714 | "url", 1715 | "webpki-roots", 1716 | ] 1717 | 1718 | [[package]] 1719 | name = "url" 1720 | version = "2.4.0" 1721 | source = "registry+https://github.com/rust-lang/crates.io-index" 1722 | checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" 1723 | dependencies = [ 1724 | "form_urlencoded", 1725 | "idna", 1726 | "percent-encoding", 1727 | ] 1728 | 1729 | [[package]] 1730 | name = "version_check" 1731 | version = "0.9.4" 1732 | source = "registry+https://github.com/rust-lang/crates.io-index" 1733 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 1734 | 1735 | [[package]] 1736 | name = "void" 1737 | version = "1.0.2" 1738 | source = "registry+https://github.com/rust-lang/crates.io-index" 1739 | checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 1740 | 1741 | [[package]] 1742 | name = "waker-fn" 1743 | version = "1.1.0" 1744 | source = "registry+https://github.com/rust-lang/crates.io-index" 1745 | checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" 1746 | 1747 | [[package]] 1748 | name = "walkdir" 1749 | version = "2.3.3" 1750 | source = "registry+https://github.com/rust-lang/crates.io-index" 1751 | checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" 1752 | dependencies = [ 1753 | "same-file", 1754 | "winapi-util", 1755 | ] 1756 | 1757 | [[package]] 1758 | name = "wasm-bindgen" 1759 | version = "0.2.87" 1760 | source = "registry+https://github.com/rust-lang/crates.io-index" 1761 | checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" 1762 | dependencies = [ 1763 | "cfg-if", 1764 | "wasm-bindgen-macro", 1765 | ] 1766 | 1767 | [[package]] 1768 | name = "wasm-bindgen-backend" 1769 | version = "0.2.87" 1770 | source = "registry+https://github.com/rust-lang/crates.io-index" 1771 | checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" 1772 | dependencies = [ 1773 | "bumpalo", 1774 | "log", 1775 | "once_cell", 1776 | "proc-macro2", 1777 | "quote", 1778 | "syn 2.0.27", 1779 | "wasm-bindgen-shared", 1780 | ] 1781 | 1782 | [[package]] 1783 | name = "wasm-bindgen-macro" 1784 | version = "0.2.87" 1785 | source = "registry+https://github.com/rust-lang/crates.io-index" 1786 | checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" 1787 | dependencies = [ 1788 | "quote", 1789 | "wasm-bindgen-macro-support", 1790 | ] 1791 | 1792 | [[package]] 1793 | name = "wasm-bindgen-macro-support" 1794 | version = "0.2.87" 1795 | source = "registry+https://github.com/rust-lang/crates.io-index" 1796 | checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" 1797 | dependencies = [ 1798 | "proc-macro2", 1799 | "quote", 1800 | "syn 2.0.27", 1801 | "wasm-bindgen-backend", 1802 | "wasm-bindgen-shared", 1803 | ] 1804 | 1805 | [[package]] 1806 | name = "wasm-bindgen-shared" 1807 | version = "0.2.87" 1808 | source = "registry+https://github.com/rust-lang/crates.io-index" 1809 | checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" 1810 | 1811 | [[package]] 1812 | name = "web-sys" 1813 | version = "0.3.64" 1814 | source = "registry+https://github.com/rust-lang/crates.io-index" 1815 | checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" 1816 | dependencies = [ 1817 | "js-sys", 1818 | "wasm-bindgen", 1819 | ] 1820 | 1821 | [[package]] 1822 | name = "webpki-roots" 1823 | version = "0.23.1" 1824 | source = "registry+https://github.com/rust-lang/crates.io-index" 1825 | checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" 1826 | dependencies = [ 1827 | "rustls-webpki 0.100.1", 1828 | ] 1829 | 1830 | [[package]] 1831 | name = "which" 1832 | version = "4.4.0" 1833 | source = "registry+https://github.com/rust-lang/crates.io-index" 1834 | checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" 1835 | dependencies = [ 1836 | "either", 1837 | "libc", 1838 | "once_cell", 1839 | ] 1840 | 1841 | [[package]] 1842 | name = "winapi" 1843 | version = "0.3.9" 1844 | source = "registry+https://github.com/rust-lang/crates.io-index" 1845 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1846 | dependencies = [ 1847 | "winapi-i686-pc-windows-gnu", 1848 | "winapi-x86_64-pc-windows-gnu", 1849 | ] 1850 | 1851 | [[package]] 1852 | name = "winapi-i686-pc-windows-gnu" 1853 | version = "0.4.0" 1854 | source = "registry+https://github.com/rust-lang/crates.io-index" 1855 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1856 | 1857 | [[package]] 1858 | name = "winapi-util" 1859 | version = "0.1.5" 1860 | source = "registry+https://github.com/rust-lang/crates.io-index" 1861 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 1862 | dependencies = [ 1863 | "winapi", 1864 | ] 1865 | 1866 | [[package]] 1867 | name = "winapi-x86_64-pc-windows-gnu" 1868 | version = "0.4.0" 1869 | source = "registry+https://github.com/rust-lang/crates.io-index" 1870 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1871 | 1872 | [[package]] 1873 | name = "windows" 1874 | version = "0.48.0" 1875 | source = "registry+https://github.com/rust-lang/crates.io-index" 1876 | checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" 1877 | dependencies = [ 1878 | "windows-targets 0.48.1", 1879 | ] 1880 | 1881 | [[package]] 1882 | name = "windows-sys" 1883 | version = "0.45.0" 1884 | source = "registry+https://github.com/rust-lang/crates.io-index" 1885 | checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 1886 | dependencies = [ 1887 | "windows-targets 0.42.2", 1888 | ] 1889 | 1890 | [[package]] 1891 | name = "windows-sys" 1892 | version = "0.48.0" 1893 | source = "registry+https://github.com/rust-lang/crates.io-index" 1894 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 1895 | dependencies = [ 1896 | "windows-targets 0.48.1", 1897 | ] 1898 | 1899 | [[package]] 1900 | name = "windows-targets" 1901 | version = "0.42.2" 1902 | source = "registry+https://github.com/rust-lang/crates.io-index" 1903 | checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" 1904 | dependencies = [ 1905 | "windows_aarch64_gnullvm 0.42.2", 1906 | "windows_aarch64_msvc 0.42.2", 1907 | "windows_i686_gnu 0.42.2", 1908 | "windows_i686_msvc 0.42.2", 1909 | "windows_x86_64_gnu 0.42.2", 1910 | "windows_x86_64_gnullvm 0.42.2", 1911 | "windows_x86_64_msvc 0.42.2", 1912 | ] 1913 | 1914 | [[package]] 1915 | name = "windows-targets" 1916 | version = "0.48.1" 1917 | source = "registry+https://github.com/rust-lang/crates.io-index" 1918 | checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" 1919 | dependencies = [ 1920 | "windows_aarch64_gnullvm 0.48.0", 1921 | "windows_aarch64_msvc 0.48.0", 1922 | "windows_i686_gnu 0.48.0", 1923 | "windows_i686_msvc 0.48.0", 1924 | "windows_x86_64_gnu 0.48.0", 1925 | "windows_x86_64_gnullvm 0.48.0", 1926 | "windows_x86_64_msvc 0.48.0", 1927 | ] 1928 | 1929 | [[package]] 1930 | name = "windows_aarch64_gnullvm" 1931 | version = "0.42.2" 1932 | source = "registry+https://github.com/rust-lang/crates.io-index" 1933 | checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 1934 | 1935 | [[package]] 1936 | name = "windows_aarch64_gnullvm" 1937 | version = "0.48.0" 1938 | source = "registry+https://github.com/rust-lang/crates.io-index" 1939 | checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" 1940 | 1941 | [[package]] 1942 | name = "windows_aarch64_msvc" 1943 | version = "0.42.2" 1944 | source = "registry+https://github.com/rust-lang/crates.io-index" 1945 | checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 1946 | 1947 | [[package]] 1948 | name = "windows_aarch64_msvc" 1949 | version = "0.48.0" 1950 | source = "registry+https://github.com/rust-lang/crates.io-index" 1951 | checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" 1952 | 1953 | [[package]] 1954 | name = "windows_i686_gnu" 1955 | version = "0.42.2" 1956 | source = "registry+https://github.com/rust-lang/crates.io-index" 1957 | checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 1958 | 1959 | [[package]] 1960 | name = "windows_i686_gnu" 1961 | version = "0.48.0" 1962 | source = "registry+https://github.com/rust-lang/crates.io-index" 1963 | checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" 1964 | 1965 | [[package]] 1966 | name = "windows_i686_msvc" 1967 | version = "0.42.2" 1968 | source = "registry+https://github.com/rust-lang/crates.io-index" 1969 | checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 1970 | 1971 | [[package]] 1972 | name = "windows_i686_msvc" 1973 | version = "0.48.0" 1974 | source = "registry+https://github.com/rust-lang/crates.io-index" 1975 | checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" 1976 | 1977 | [[package]] 1978 | name = "windows_x86_64_gnu" 1979 | version = "0.42.2" 1980 | source = "registry+https://github.com/rust-lang/crates.io-index" 1981 | checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 1982 | 1983 | [[package]] 1984 | name = "windows_x86_64_gnu" 1985 | version = "0.48.0" 1986 | source = "registry+https://github.com/rust-lang/crates.io-index" 1987 | checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" 1988 | 1989 | [[package]] 1990 | name = "windows_x86_64_gnullvm" 1991 | version = "0.42.2" 1992 | source = "registry+https://github.com/rust-lang/crates.io-index" 1993 | checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 1994 | 1995 | [[package]] 1996 | name = "windows_x86_64_gnullvm" 1997 | version = "0.48.0" 1998 | source = "registry+https://github.com/rust-lang/crates.io-index" 1999 | checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" 2000 | 2001 | [[package]] 2002 | name = "windows_x86_64_msvc" 2003 | version = "0.42.2" 2004 | source = "registry+https://github.com/rust-lang/crates.io-index" 2005 | checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 2006 | 2007 | [[package]] 2008 | name = "windows_x86_64_msvc" 2009 | version = "0.48.0" 2010 | source = "registry+https://github.com/rust-lang/crates.io-index" 2011 | checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" 2012 | 2013 | [[package]] 2014 | name = "winnow" 2015 | version = "0.5.1" 2016 | source = "registry+https://github.com/rust-lang/crates.io-index" 2017 | checksum = "25b5872fa2e10bd067ae946f927e726d7d603eaeb6e02fa6a350e0722d2b8c11" 2018 | dependencies = [ 2019 | "memchr", 2020 | ] 2021 | --------------------------------------------------------------------------------