├── .gitignore ├── img ├── game.png └── menu.png ├── Cargo.toml ├── LICENSE ├── README.md ├── src └── main.rs └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /img/game.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tortured-Metaphor/LightCycle/HEAD/img/game.png -------------------------------------------------------------------------------- /img/menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tortured-Metaphor/LightCycle/HEAD/img/menu.png -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "lightcycle" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | ggez = "0.9" 8 | rand = "0.8" 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Tortured Metaphor 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LightCycle 2 | 3 | A classic TRON-inspired light cycle game built with Rust and ggez. 4 | 5 | ![LightCycle menu screenshot](img/menu.png) 6 | ![LightCycle gameplay screenshot](img/game.png) 7 | 8 | ## Features 9 | 10 | - **Single-player and Two-player modes** - Battle against AI or a friend 11 | - **Adjustable AI Difficulty** - Easy, Medium, and Hard AI opponents 12 | - **Boost Mechanic** - Limited energy boost system for strategic gameplay 13 | - **Visual Effects** - Particle trails, screen shake, and glow effects 14 | - **Pause Menu** - Full pause functionality with in-game controls 15 | - **Retro Aesthetic** - 8-bit styled graphics with neon colors 16 | 17 | ## Controls 18 | 19 | ### Menu 20 | - `1` - Start single-player game 21 | - `2` - Start two-player game 22 | - `D` - Cycle AI difficulty (Easy/Medium/Hard) 23 | 24 | ### Player 1 25 | - `W`/`A`/`S`/`D` - Movement 26 | - `Left Shift` - Boost 27 | 28 | ### Player 2 29 | - `Arrow Keys` - Movement 30 | - `Right Shift` - Boost 31 | 32 | ### General 33 | - `P` - Pause/Resume 34 | - `ESC` - Return to menu 35 | 36 | ## Installation 37 | 38 | ### Prerequisites 39 | - Rust (latest stable version) 40 | - Cargo 41 | 42 | ### Building and Running 43 | 44 | ```bash 45 | # Clone the repository 46 | git clone https://github.com/Tortured-Metaphor/LightCycle.git 47 | cd LightCycle 48 | 49 | # Build the project 50 | cargo build --release 51 | 52 | # Run the game 53 | cargo run --release 54 | ``` 55 | 56 | ### Linux Dependencies 57 | 58 | Building this project on Linux requires several system libraries. Install them with: 59 | 60 | **Debian/Ubuntu:** 61 | ```bash 62 | sudo apt-get install libasound2-dev libudev-dev pkg-config build-essential 63 | ``` 64 | 65 | **Fedora:** 66 | ```bash 67 | sudo dnf install alsa-lib-devel systemd-devel 68 | ``` 69 | 70 | **Arch Linux:** 71 | ```bash 72 | sudo pacman -S alsa-lib systemd pkgconf 73 | ``` 74 | 75 | ## Gameplay 76 | 77 | Navigate your light cycle around the arena, leaving a trail behind you. Avoid crashing into walls, your own trail, or your opponent's trail. The last cycle standing wins! 78 | 79 | Use your boost strategically - it doubles your speed but drains energy quickly. Energy regenerates when not boosting. 80 | 81 | ## AI Difficulty Levels 82 | 83 | - **Easy**: Shorter reaction time, makes mistakes more often 84 | - **Medium**: Balanced gameplay, moderate challenge 85 | - **Hard**: Advanced pathfinding, optimal decision making, aggressive boost usage 86 | 87 | ## Development 88 | 89 | Built with: 90 | - [Rust](https://www.rust-lang.org/) - Systems programming language 91 | - [ggez](https://ggez.rs/) - Rust game framework 92 | 93 | ## Version History 94 | 95 | - v0.2.0 - Added pause menu, boost mechanics, AI difficulties, visual effects 96 | - v0.1.0 - Initial game implementation 97 | 98 | ## License 99 | 100 | This project is open source and available under the MIT License. 101 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | use ggez::{ 2 | event::{self, EventHandler}, 3 | graphics::{self, Color, DrawMode, DrawParam, MeshBuilder, Rect}, 4 | input::keyboard::{KeyCode, KeyInput}, 5 | mint::Point2, 6 | Context, ContextBuilder, GameResult, 7 | }; 8 | use rand::Rng; 9 | use std::collections::VecDeque; 10 | 11 | const GRID_WIDTH: f32 = 1600.0; 12 | const GRID_HEIGHT: f32 = 1000.0; 13 | const CELL_SIZE: f32 = 8.0; 14 | const CYCLE_SPEED: f32 = 3.0; 15 | const BOOST_SPEED: f32 = 6.0; 16 | const TRAIL_MAX_LENGTH: usize = 15000; 17 | const CYCLE_WIDTH: f32 = 16.0; 18 | const CYCLE_HEIGHT: f32 = 24.0; 19 | const MAX_BOOST_ENERGY: f32 = 100.0; 20 | const BOOST_DRAIN_RATE: f32 = 40.0; // Energy per second 21 | const BOOST_RECHARGE_RATE: f32 = 15.0; // Energy per second 22 | 23 | #[derive(Clone, Copy, Debug, PartialEq)] 24 | enum Direction { 25 | Up, 26 | Down, 27 | Left, 28 | Right, 29 | } 30 | 31 | impl Direction { 32 | fn to_velocity(&self) -> (f32, f32) { 33 | match self { 34 | Direction::Up => (0.0, -CYCLE_SPEED), 35 | Direction::Down => (0.0, CYCLE_SPEED), 36 | Direction::Left => (-CYCLE_SPEED, 0.0), 37 | Direction::Right => (CYCLE_SPEED, 0.0), 38 | } 39 | } 40 | 41 | fn is_opposite(&self, other: &Direction) -> bool { 42 | matches!( 43 | (self, other), 44 | (Direction::Up, Direction::Down) 45 | | (Direction::Down, Direction::Up) 46 | | (Direction::Left, Direction::Right) 47 | | (Direction::Right, Direction::Left) 48 | ) 49 | } 50 | } 51 | 52 | #[derive(Clone, Copy, Debug, PartialEq)] 53 | enum PlayerType { 54 | Human, 55 | Computer, 56 | } 57 | 58 | #[derive(Clone, Copy, Debug, PartialEq)] 59 | enum AIDifficulty { 60 | Easy, 61 | Medium, 62 | Hard, 63 | } 64 | 65 | struct Explosion { 66 | _position: Point2, 67 | particles: Vec, 68 | time: f32, 69 | } 70 | 71 | struct Particle { 72 | position: Point2, 73 | velocity: Point2, 74 | lifetime: f32, 75 | color: Color, 76 | } 77 | 78 | impl Explosion { 79 | fn new(position: Point2, color: Color) -> Self { 80 | let mut rng = rand::thread_rng(); 81 | let particles = (0..50) 82 | .map(|_| { 83 | let angle = rng.gen_range(0.0..std::f32::consts::TAU); 84 | let speed = rng.gen_range(50.0..200.0); 85 | Particle { 86 | position, 87 | velocity: Point2 { 88 | x: angle.cos() * speed, 89 | y: angle.sin() * speed, 90 | }, 91 | lifetime: rng.gen_range(0.5..1.5), 92 | color: Color::new( 93 | color.r, 94 | color.g, 95 | color.b, 96 | rng.gen_range(0.5..1.0), 97 | ), 98 | } 99 | }) 100 | .collect(); 101 | 102 | Explosion { 103 | _position: position, 104 | particles, 105 | time: 0.0, 106 | } 107 | } 108 | 109 | fn update(&mut self, dt: f32) { 110 | self.time += dt; 111 | for particle in &mut self.particles { 112 | particle.position.x += particle.velocity.x * dt; 113 | particle.position.y += particle.velocity.y * dt; 114 | particle.lifetime -= dt; 115 | particle.velocity.x *= 0.98; 116 | particle.velocity.y *= 0.98; 117 | } 118 | self.particles.retain(|p| p.lifetime > 0.0); 119 | } 120 | 121 | fn is_finished(&self) -> bool { 122 | self.particles.is_empty() 123 | } 124 | } 125 | 126 | struct LightCycle { 127 | position: Point2, 128 | direction: Direction, 129 | trail: VecDeque>, 130 | color: Color, 131 | alive: bool, 132 | player_type: PlayerType, 133 | controls: Option<(KeyCode, KeyCode, KeyCode, KeyCode)>, // up, down, left, right 134 | boost_energy: f32, 135 | is_boosting: bool, 136 | boost_key: Option, 137 | ai_difficulty: AIDifficulty, 138 | } 139 | 140 | impl LightCycle { 141 | fn new( 142 | x: f32, 143 | y: f32, 144 | direction: Direction, 145 | color: Color, 146 | player_type: PlayerType, 147 | controls: Option<(KeyCode, KeyCode, KeyCode, KeyCode)>, 148 | boost_key: Option, 149 | ai_difficulty: AIDifficulty, 150 | ) -> Self { 151 | LightCycle { 152 | position: Point2 { x, y }, 153 | direction, 154 | trail: VecDeque::new(), 155 | color, 156 | alive: true, 157 | player_type, 158 | controls, 159 | boost_energy: MAX_BOOST_ENERGY, 160 | is_boosting: false, 161 | boost_key, 162 | ai_difficulty, 163 | } 164 | } 165 | 166 | fn update(&mut self, dt: f32, all_trails: &[VecDeque>], own_index: usize) { 167 | if !self.alive { 168 | return; 169 | } 170 | 171 | // Handle boost energy 172 | if self.is_boosting && self.boost_energy > 0.0 { 173 | self.boost_energy = (self.boost_energy - BOOST_DRAIN_RATE * dt).max(0.0); 174 | if self.boost_energy == 0.0 { 175 | self.is_boosting = false; 176 | } 177 | } else if !self.is_boosting && self.boost_energy < MAX_BOOST_ENERGY { 178 | self.boost_energy = (self.boost_energy + BOOST_RECHARGE_RATE * dt).min(MAX_BOOST_ENERGY); 179 | } 180 | 181 | let speed = if self.is_boosting { BOOST_SPEED } else { CYCLE_SPEED }; 182 | let velocity = match self.direction { 183 | Direction::Up => (0.0, -speed), 184 | Direction::Down => (0.0, speed), 185 | Direction::Left => (-speed, 0.0), 186 | Direction::Right => (speed, 0.0), 187 | }; 188 | let old_pos = self.position; 189 | 190 | self.position.x += velocity.0; 191 | self.position.y += velocity.1; 192 | 193 | // Add intermediate points for smoother trail 194 | let distance = ((self.position.x - old_pos.x).powi(2) + 195 | (self.position.y - old_pos.y).powi(2)).sqrt(); 196 | let steps = (distance / 2.0).ceil() as usize; 197 | 198 | for i in 0..=steps { 199 | let t = i as f32 / steps.max(1) as f32; 200 | let interpolated = Point2 { 201 | x: old_pos.x + (self.position.x - old_pos.x) * t, 202 | y: old_pos.y + (self.position.y - old_pos.y) * t, 203 | }; 204 | self.trail.push_back(interpolated); 205 | } 206 | 207 | if self.trail.len() > TRAIL_MAX_LENGTH { 208 | self.trail.pop_front(); 209 | } 210 | 211 | // Check wall collision 212 | if self.position.x < 0.0 213 | || self.position.x >= GRID_WIDTH 214 | || self.position.y < 0.0 215 | || self.position.y >= GRID_HEIGHT 216 | { 217 | self.alive = false; 218 | return; 219 | } 220 | 221 | // Check trail collision 222 | for (i, trail) in all_trails.iter().enumerate() { 223 | let check_range = if i == own_index { 224 | // For own trail, skip recent points to avoid self-collision on turns 225 | // Increased from 10 to 20 to give more room for turns 226 | trail.len().saturating_sub(20) 227 | } else { 228 | trail.len() 229 | }; 230 | 231 | for point in trail.iter().take(check_range) { 232 | let dist = ((self.position.x - point.x).powi(2) + 233 | (self.position.y - point.y).powi(2)).sqrt(); 234 | if dist < CELL_SIZE { 235 | self.alive = false; 236 | return; 237 | } 238 | } 239 | } 240 | } 241 | 242 | fn ai_update(&mut self, all_trails: &[VecDeque>], own_index: usize) { 243 | if self.player_type != PlayerType::Computer || !self.alive { 244 | return; 245 | } 246 | 247 | let mut rng = rand::thread_rng(); 248 | 249 | // Adjust AI parameters based on difficulty 250 | let (look_ahead, reaction_distance, turn_chance, boost_threshold, boost_chance) = match self.ai_difficulty { 251 | AIDifficulty::Easy => (30.0, CELL_SIZE * 4.0, 5, 30.0, 1), 252 | AIDifficulty::Medium => (50.0, CELL_SIZE * 6.0, 2, 50.0, 3), 253 | AIDifficulty::Hard => (80.0, CELL_SIZE * 10.0, 1, 70.0, 5), 254 | }; 255 | 256 | // Check if we need to turn 257 | let current_velocity = self.direction.to_velocity(); 258 | let future_x = self.position.x + current_velocity.0 * look_ahead; 259 | let future_y = self.position.y + current_velocity.1 * look_ahead; 260 | 261 | let mut should_turn = false; 262 | 263 | // Check for wall collision 264 | if future_x < 10.0 || future_x >= GRID_WIDTH - 10.0 265 | || future_y < 10.0 || future_y >= GRID_HEIGHT - 10.0 { 266 | should_turn = true; 267 | } 268 | 269 | // Check for trail collision 270 | if !should_turn { 271 | for (i, trail) in all_trails.iter().enumerate() { 272 | // For own trail, skip more recent points 273 | let skip_count = if i == own_index { 30 } else { 0 }; 274 | for point in trail.iter().skip(skip_count) { 275 | let dist_to_future = ((future_x - point.x).powi(2) + 276 | (future_y - point.y).powi(2)).sqrt(); 277 | if dist_to_future < reaction_distance { 278 | should_turn = true; 279 | break; 280 | } 281 | } 282 | if should_turn { 283 | break; 284 | } 285 | } 286 | } 287 | 288 | if should_turn { 289 | let possible_dirs = [Direction::Up, Direction::Down, Direction::Left, Direction::Right]; 290 | let mut safe_dirs = Vec::new(); 291 | 292 | for dir in &possible_dirs { 293 | if dir.is_opposite(&self.direction) { 294 | continue; 295 | } 296 | 297 | let test_velocity = dir.to_velocity(); 298 | let test_x = self.position.x + test_velocity.0 * look_ahead; 299 | let test_y = self.position.y + test_velocity.1 * look_ahead; 300 | 301 | // Check if this direction is safe 302 | let mut is_safe = test_x >= 10.0 && test_x < GRID_WIDTH - 10.0 303 | && test_y >= 10.0 && test_y < GRID_HEIGHT - 10.0; 304 | 305 | if is_safe { 306 | for (i, trail) in all_trails.iter().enumerate() { 307 | // Skip recent points for own trail when checking safe directions 308 | let skip_count = if i == own_index { 30 } else { 0 }; 309 | for point in trail.iter().skip(skip_count) { 310 | let dist = ((test_x - point.x).powi(2) + 311 | (test_y - point.y).powi(2)).sqrt(); 312 | if dist < reaction_distance { 313 | is_safe = false; 314 | break; 315 | } 316 | } 317 | if !is_safe { 318 | break; 319 | } 320 | } 321 | } 322 | 323 | if is_safe { 324 | safe_dirs.push(*dir); 325 | } 326 | } 327 | 328 | if !safe_dirs.is_empty() { 329 | // Hard AI chooses more optimal paths 330 | if self.ai_difficulty == AIDifficulty::Hard && safe_dirs.len() > 1 { 331 | // Choose direction with most open space 332 | let mut best_dir = safe_dirs[0]; 333 | let mut max_space = 0.0; 334 | 335 | for dir in &safe_dirs { 336 | let test_velocity = dir.to_velocity(); 337 | let mut space = 0.0; 338 | for i in 1..10 { 339 | let check_x = self.position.x + test_velocity.0 * (i as f32 * 10.0); 340 | let check_y = self.position.y + test_velocity.1 * (i as f32 * 10.0); 341 | if check_x >= 0.0 && check_x < GRID_WIDTH && check_y >= 0.0 && check_y < GRID_HEIGHT { 342 | space += 10.0; 343 | } else { 344 | break; 345 | } 346 | } 347 | if space > max_space { 348 | max_space = space; 349 | best_dir = *dir; 350 | } 351 | } 352 | self.direction = best_dir; 353 | } else { 354 | self.direction = safe_dirs[rng.gen_range(0..safe_dirs.len())]; 355 | } 356 | } 357 | } else if rng.gen_range(0..100) < turn_chance { 358 | // Random turn occasionally for unpredictability 359 | let possible_dirs = match self.direction { 360 | Direction::Up | Direction::Down => vec![Direction::Left, Direction::Right], 361 | Direction::Left | Direction::Right => vec![Direction::Up, Direction::Down], 362 | }; 363 | self.direction = possible_dirs[rng.gen_range(0..possible_dirs.len())]; 364 | } 365 | 366 | // AI boost management 367 | if self.boost_energy > boost_threshold { 368 | // Use boost strategically 369 | if should_turn && rng.gen_range(0..100) < boost_chance * 10 { 370 | // Boost to escape danger 371 | self.is_boosting = true; 372 | } else if !should_turn && rng.gen_range(0..100) < boost_chance { 373 | // Occasional boost when safe 374 | self.is_boosting = true; 375 | } else { 376 | self.is_boosting = false; 377 | } 378 | } else { 379 | self.is_boosting = false; 380 | } 381 | } 382 | 383 | fn handle_input(&mut self, keycode: KeyCode, pressed: bool) { 384 | if !self.alive || self.player_type != PlayerType::Human { 385 | return; 386 | } 387 | 388 | // Handle boost 389 | if let Some(boost_key) = self.boost_key { 390 | if keycode == boost_key { 391 | if pressed && self.boost_energy > 10.0 { 392 | self.is_boosting = true; 393 | } else { 394 | self.is_boosting = false; 395 | } 396 | } 397 | } 398 | 399 | // Handle direction (only on key press) 400 | if pressed { 401 | if let Some((up, down, left, right)) = self.controls { 402 | let new_direction = if keycode == up { 403 | Some(Direction::Up) 404 | } else if keycode == down { 405 | Some(Direction::Down) 406 | } else if keycode == left { 407 | Some(Direction::Left) 408 | } else if keycode == right { 409 | Some(Direction::Right) 410 | } else { 411 | None 412 | }; 413 | 414 | if let Some(dir) = new_direction { 415 | if !dir.is_opposite(&self.direction) { 416 | self.direction = dir; 417 | } 418 | } 419 | } 420 | } 421 | } 422 | } 423 | 424 | enum GameMode { 425 | Menu, 426 | Playing, 427 | Paused, 428 | GameOver { winner: String }, 429 | } 430 | 431 | struct TrailParticle { 432 | position: Point2, 433 | velocity: Point2, 434 | lifetime: f32, 435 | color: Color, 436 | } 437 | 438 | impl TrailParticle { 439 | fn new(position: Point2, direction: Direction, color: Color) -> Self { 440 | let mut rng = rand::thread_rng(); 441 | let base_vel = direction.to_velocity(); 442 | TrailParticle { 443 | position, 444 | velocity: Point2 { 445 | x: -base_vel.0 * 0.5 + rng.gen_range(-10.0..10.0), 446 | y: -base_vel.1 * 0.5 + rng.gen_range(-10.0..10.0), 447 | }, 448 | lifetime: rng.gen_range(0.2..0.5), 449 | color: Color::new( 450 | color.r, 451 | color.g, 452 | color.b, 453 | rng.gen_range(0.3..0.7), 454 | ), 455 | } 456 | } 457 | 458 | fn update(&mut self, dt: f32) { 459 | self.position.x += self.velocity.x * dt; 460 | self.position.y += self.velocity.y * dt; 461 | self.lifetime -= dt; 462 | self.velocity.x *= 0.95; 463 | self.velocity.y *= 0.95; 464 | } 465 | } 466 | 467 | struct GameState { 468 | cycles: Vec, 469 | explosions: Vec, 470 | mode: GameMode, 471 | single_player: bool, 472 | ai_difficulty: AIDifficulty, 473 | screen_shake: f32, 474 | trail_particles: Vec, 475 | } 476 | 477 | impl GameState { 478 | fn new() -> Self { 479 | GameState { 480 | cycles: Vec::new(), 481 | explosions: Vec::new(), 482 | mode: GameMode::Menu, 483 | single_player: true, 484 | ai_difficulty: AIDifficulty::Medium, 485 | screen_shake: 0.0, 486 | trail_particles: Vec::new(), 487 | } 488 | } 489 | 490 | fn start_game(&mut self, single_player: bool) { 491 | self.cycles.clear(); 492 | self.explosions.clear(); 493 | self.trail_particles.clear(); 494 | self.screen_shake = 0.0; 495 | self.single_player = single_player; 496 | 497 | // Player 1 (WASD controls, LShift for boost) 498 | self.cycles.push(LightCycle::new( 499 | 200.0, 500 | GRID_HEIGHT / 2.0, 501 | Direction::Right, 502 | Color::from_rgb(0, 255, 255), // Cyan 503 | PlayerType::Human, 504 | Some((KeyCode::W, KeyCode::S, KeyCode::A, KeyCode::D)), 505 | Some(KeyCode::LShift), 506 | AIDifficulty::Medium, // Not used for human players 507 | )); 508 | 509 | // Player 2 or Computer (Arrow keys, RShift for boost) 510 | self.cycles.push(LightCycle::new( 511 | GRID_WIDTH - 200.0, 512 | GRID_HEIGHT / 2.0, 513 | Direction::Left, 514 | Color::from_rgb(255, 165, 0), // Orange 515 | if single_player { PlayerType::Computer } else { PlayerType::Human }, 516 | if single_player { 517 | None 518 | } else { 519 | Some((KeyCode::Up, KeyCode::Down, KeyCode::Left, KeyCode::Right)) 520 | }, 521 | if single_player { None } else { Some(KeyCode::RShift) }, 522 | self.ai_difficulty, 523 | )); 524 | 525 | self.mode = GameMode::Playing; 526 | } 527 | 528 | fn check_game_over(&mut self) { 529 | let alive_count = self.cycles.iter().filter(|c| c.alive).count(); 530 | 531 | if alive_count <= 1 { 532 | let winner = if alive_count == 0 { 533 | "Draw!".to_string() 534 | } else { 535 | let winner_idx = self.cycles.iter().position(|c| c.alive).unwrap(); 536 | match winner_idx { 537 | 0 => "Player 1 Wins!".to_string(), 538 | 1 => if self.single_player { 539 | "Computer Wins!".to_string() 540 | } else { 541 | "Player 2 Wins!".to_string() 542 | }, 543 | _ => "Unknown".to_string(), 544 | } 545 | }; 546 | self.mode = GameMode::GameOver { winner }; 547 | } 548 | } 549 | } 550 | 551 | impl EventHandler for GameState { 552 | fn update(&mut self, _ctx: &mut Context) -> GameResult { 553 | match self.mode { 554 | GameMode::Playing => { 555 | let dt = 1.0 / 60.0; 556 | 557 | // AI updates 558 | let all_trails: Vec<_> = self.cycles.iter().map(|c| c.trail.clone()).collect(); 559 | for (i, cycle) in self.cycles.iter_mut().enumerate() { 560 | cycle.ai_update(&all_trails, i); 561 | } 562 | 563 | // Movement updates 564 | let all_trails: Vec<_> = self.cycles.iter().map(|c| c.trail.clone()).collect(); 565 | for (i, cycle) in self.cycles.iter_mut().enumerate() { 566 | let was_alive = cycle.alive; 567 | cycle.update(dt, &all_trails, i); 568 | 569 | // Create explosion when cycle dies 570 | if was_alive && !cycle.alive { 571 | self.explosions.push(Explosion::new(cycle.position, cycle.color)); 572 | self.screen_shake = 20.0; // Add screen shake on collision 573 | } 574 | 575 | // Create trail particles for boosting cycles 576 | if cycle.alive && cycle.is_boosting { 577 | let mut rng = rand::thread_rng(); 578 | if rng.gen_range(0..100) < 30 { // 30% chance to spawn particle 579 | self.trail_particles.push(TrailParticle::new( 580 | cycle.position, 581 | cycle.direction, 582 | cycle.color, 583 | )); 584 | } 585 | } 586 | } 587 | 588 | // Update explosions 589 | for explosion in &mut self.explosions { 590 | explosion.update(dt); 591 | } 592 | self.explosions.retain(|e| !e.is_finished()); 593 | 594 | // Update trail particles 595 | for particle in &mut self.trail_particles { 596 | particle.update(dt); 597 | } 598 | self.trail_particles.retain(|p| p.lifetime > 0.0); 599 | 600 | // Update screen shake 601 | if self.screen_shake > 0.0 { 602 | self.screen_shake = (self.screen_shake - dt * 50.0).max(0.0); 603 | } 604 | 605 | self.check_game_over(); 606 | } 607 | GameMode::Paused => { 608 | // Do nothing while paused 609 | } 610 | _ => {} 611 | } 612 | Ok(()) 613 | } 614 | 615 | fn draw(&mut self, ctx: &mut Context) -> GameResult { 616 | let mut canvas = graphics::Canvas::from_frame(ctx, Color::BLACK); 617 | 618 | match &self.mode { 619 | GameMode::Menu => { 620 | let title_text = graphics::Text::new("LIGHT CYCLE"); 621 | canvas.draw( 622 | &title_text, 623 | DrawParam::default() 624 | .dest([GRID_WIDTH / 2.0 - 200.0, 300.0]) 625 | .color(Color::from_rgb(0, 255, 255)) 626 | .scale([4.0, 4.0]), 627 | ); 628 | 629 | let sp_text = graphics::Text::new("Press 1 for Single Player"); 630 | canvas.draw( 631 | &sp_text, 632 | DrawParam::default() 633 | .dest([GRID_WIDTH / 2.0 - 120.0, 420.0]) 634 | .color(Color::WHITE), 635 | ); 636 | 637 | let mp_text = graphics::Text::new("Press 2 for Two Players"); 638 | canvas.draw( 639 | &mp_text, 640 | DrawParam::default() 641 | .dest([GRID_WIDTH / 2.0 - 120.0, 460.0]) 642 | .color(Color::WHITE), 643 | ); 644 | 645 | let diff_text = graphics::Text::new(format!("AI Difficulty: {:?} (Press D to change)", self.ai_difficulty)); 646 | canvas.draw( 647 | &diff_text, 648 | DrawParam::default() 649 | .dest([GRID_WIDTH / 2.0 - 160.0, 520.0]) 650 | .color(match self.ai_difficulty { 651 | AIDifficulty::Easy => Color::from_rgb(100, 255, 100), 652 | AIDifficulty::Medium => Color::from_rgb(255, 255, 100), 653 | AIDifficulty::Hard => Color::from_rgb(255, 100, 100), 654 | }), 655 | ); 656 | 657 | let controls_text = graphics::Text::new("P1: WASD + LShift (boost) | P2: Arrows + RShift (boost)"); 658 | canvas.draw( 659 | &controls_text, 660 | DrawParam::default() 661 | .dest([GRID_WIDTH / 2.0 - 230.0, 600.0]) 662 | .color(Color::from_rgb(128, 128, 128)), 663 | ); 664 | } 665 | GameMode::Playing => { 666 | // Apply screen shake 667 | let shake_offset = if self.screen_shake > 0.0 { 668 | let mut rng = rand::thread_rng(); 669 | Point2 { 670 | x: rng.gen_range(-self.screen_shake..self.screen_shake), 671 | y: rng.gen_range(-self.screen_shake..self.screen_shake), 672 | } 673 | } else { 674 | Point2 { x: 0.0, y: 0.0 } 675 | }; 676 | 677 | // Draw grid background with 8-bit style grid lines 678 | let mut mesh_builder = MeshBuilder::new(); 679 | 680 | // Draw border with glow effect 681 | mesh_builder.rectangle( 682 | DrawMode::stroke(3.0), 683 | Rect::new(0.0, 0.0, GRID_WIDTH, GRID_HEIGHT), 684 | Color::from_rgb(0, 100, 200), 685 | )?; 686 | 687 | // Draw vertical grid lines 688 | let grid_spacing = 50.0; 689 | let mut x = grid_spacing; 690 | while x < GRID_WIDTH { 691 | mesh_builder.line( 692 | &[Point2 { x, y: 0.0 }, Point2 { x, y: GRID_HEIGHT }], 693 | 1.0, 694 | Color::from_rgba(20, 40, 60, 50), 695 | )?; 696 | x += grid_spacing; 697 | } 698 | 699 | // Draw horizontal grid lines 700 | let mut y = grid_spacing; 701 | while y < GRID_HEIGHT { 702 | mesh_builder.line( 703 | &[Point2 { x: 0.0, y }, Point2 { x: GRID_WIDTH, y }], 704 | 1.0, 705 | Color::from_rgba(20, 40, 60, 50), 706 | )?; 707 | y += grid_spacing; 708 | } 709 | 710 | let grid_mesh = graphics::Mesh::from_data(ctx, mesh_builder.build()); 711 | canvas.draw(&grid_mesh, DrawParam::default().dest(shake_offset)); 712 | 713 | // Draw trails with glow effect 714 | for cycle in &self.cycles { 715 | if cycle.trail.len() >= 2 { 716 | let trail_vec: Vec> = cycle.trail.iter().copied().collect(); 717 | let mut mesh_builder = MeshBuilder::new(); 718 | 719 | // Draw outer glow layer 720 | for i in 0..trail_vec.len() - 1 { 721 | let glow_color = Color::new( 722 | cycle.color.r * 0.3, 723 | cycle.color.g * 0.3, 724 | cycle.color.b * 0.3, 725 | 0.3, 726 | ); 727 | mesh_builder.line( 728 | &[trail_vec[i], trail_vec[i + 1]], 729 | CELL_SIZE * 2.5, 730 | glow_color, 731 | )?; 732 | } 733 | 734 | // Draw main trail 735 | for i in 0..trail_vec.len() - 1 { 736 | mesh_builder.line( 737 | &[trail_vec[i], trail_vec[i + 1]], 738 | CELL_SIZE, 739 | cycle.color, 740 | )?; 741 | } 742 | 743 | // Draw bright core 744 | for i in 0..trail_vec.len() - 1 { 745 | let core_color = Color::new( 746 | (cycle.color.r * 1.2).min(1.0), 747 | (cycle.color.g * 1.2).min(1.0), 748 | (cycle.color.b * 1.2).min(1.0), 749 | 1.0, 750 | ); 751 | mesh_builder.line( 752 | &[trail_vec[i], trail_vec[i + 1]], 753 | CELL_SIZE * 0.5, 754 | core_color, 755 | )?; 756 | } 757 | 758 | let mesh = graphics::Mesh::from_data(ctx, mesh_builder.build()); 759 | canvas.draw(&mesh, DrawParam::default().dest(shake_offset)); 760 | } 761 | } 762 | 763 | // Draw trail particles 764 | for particle in &self.trail_particles { 765 | let mesh = graphics::Mesh::from_data( 766 | ctx, 767 | MeshBuilder::new() 768 | .circle( 769 | DrawMode::fill(), 770 | Point2 { 771 | x: particle.position.x + shake_offset.x, 772 | y: particle.position.y + shake_offset.y, 773 | }, 774 | 3.0 * particle.lifetime * 2.0, 775 | 0.5, 776 | particle.color, 777 | )? 778 | .build(), 779 | ); 780 | canvas.draw(&mesh, DrawParam::default()); 781 | } 782 | 783 | // Draw cycles as 8-bit style vehicles 784 | for cycle in &self.cycles { 785 | if cycle.alive { 786 | let mut mesh_builder = MeshBuilder::new(); 787 | 788 | // Calculate cycle orientation 789 | let (body_width, body_height) = match cycle.direction { 790 | Direction::Up | Direction::Down => (CYCLE_WIDTH, CYCLE_HEIGHT), 791 | Direction::Left | Direction::Right => (CYCLE_HEIGHT, CYCLE_WIDTH), 792 | }; 793 | 794 | // Draw boost effect if active 795 | if cycle.is_boosting { 796 | // Draw boost trail particles 797 | let boost_color = Color::new( 798 | 1.0, 799 | 0.8, 800 | 0.2, 801 | 0.5, 802 | ); 803 | mesh_builder.circle( 804 | DrawMode::fill(), 805 | cycle.position, 806 | body_width * 2.5, 807 | 0.1, 808 | boost_color, 809 | )?; 810 | } 811 | 812 | // Draw large glow effect 813 | let glow_intensity = if cycle.is_boosting { 0.6 } else { 0.4 }; 814 | let glow_size = if cycle.is_boosting { 2.0 } else { 1.5 }; 815 | let glow_color = Color::new( 816 | cycle.color.r * glow_intensity, 817 | cycle.color.g * glow_intensity, 818 | cycle.color.b * glow_intensity, 819 | 0.2, 820 | ); 821 | mesh_builder.circle( 822 | DrawMode::fill(), 823 | cycle.position, 824 | body_width * glow_size, 825 | 0.1, 826 | glow_color, 827 | )?; 828 | 829 | // Draw main body (8-bit styled rectangle) 830 | mesh_builder.rectangle( 831 | DrawMode::fill(), 832 | Rect::new( 833 | cycle.position.x - body_width / 2.0, 834 | cycle.position.y - body_height / 2.0, 835 | body_width, 836 | body_height, 837 | ), 838 | cycle.color, 839 | )?; 840 | 841 | // Draw body outline for retro effect 842 | mesh_builder.rectangle( 843 | DrawMode::stroke(2.0), 844 | Rect::new( 845 | cycle.position.x - body_width / 2.0, 846 | cycle.position.y - body_height / 2.0, 847 | body_width, 848 | body_height, 849 | ), 850 | Color::new( 851 | (cycle.color.r * 1.3).min(1.0), 852 | (cycle.color.g * 1.3).min(1.0), 853 | (cycle.color.b * 1.3).min(1.0), 854 | 1.0, 855 | ), 856 | )?; 857 | 858 | // Draw cockpit/core as bright pixel 859 | mesh_builder.rectangle( 860 | DrawMode::fill(), 861 | Rect::new( 862 | cycle.position.x - 4.0, 863 | cycle.position.y - 4.0, 864 | 8.0, 865 | 8.0, 866 | ), 867 | Color::WHITE, 868 | )?; 869 | 870 | // Draw directional lights (8-bit style pixels) 871 | let (light1_x, light1_y, light2_x, light2_y) = match cycle.direction { 872 | Direction::Up => ( 873 | cycle.position.x - 6.0, cycle.position.y - body_height / 2.0 + 4.0, 874 | cycle.position.x + 6.0, cycle.position.y - body_height / 2.0 + 4.0, 875 | ), 876 | Direction::Down => ( 877 | cycle.position.x - 6.0, cycle.position.y + body_height / 2.0 - 4.0, 878 | cycle.position.x + 6.0, cycle.position.y + body_height / 2.0 - 4.0, 879 | ), 880 | Direction::Left => ( 881 | cycle.position.x - body_width / 2.0 + 4.0, cycle.position.y - 6.0, 882 | cycle.position.x - body_width / 2.0 + 4.0, cycle.position.y + 6.0, 883 | ), 884 | Direction::Right => ( 885 | cycle.position.x + body_width / 2.0 - 4.0, cycle.position.y - 6.0, 886 | cycle.position.x + body_width / 2.0 - 4.0, cycle.position.y + 6.0, 887 | ), 888 | }; 889 | 890 | // Draw headlights as bright pixels 891 | mesh_builder.rectangle( 892 | DrawMode::fill(), 893 | Rect::new(light1_x - 2.0, light1_y - 2.0, 4.0, 4.0), 894 | Color::from_rgb(255, 255, 200), 895 | )?; 896 | mesh_builder.rectangle( 897 | DrawMode::fill(), 898 | Rect::new(light2_x - 2.0, light2_y - 2.0, 4.0, 4.0), 899 | Color::from_rgb(255, 255, 200), 900 | )?; 901 | 902 | let mesh = graphics::Mesh::from_data(ctx, mesh_builder.build()); 903 | canvas.draw(&mesh, DrawParam::default().dest(shake_offset)); 904 | } 905 | } 906 | 907 | // Draw explosions 908 | for explosion in &self.explosions { 909 | for particle in &explosion.particles { 910 | let alpha = (particle.lifetime / 1.5).min(1.0); 911 | let color = Color::new( 912 | particle.color.r, 913 | particle.color.g, 914 | particle.color.b, 915 | particle.color.a * alpha, 916 | ); 917 | 918 | let mesh = graphics::Mesh::from_data( 919 | ctx, 920 | MeshBuilder::new() 921 | .rectangle( 922 | DrawMode::fill(), 923 | Rect::new( 924 | particle.position.x - 2.0, 925 | particle.position.y - 2.0, 926 | 4.0, 927 | 4.0, 928 | ), 929 | color, 930 | )? 931 | .build(), 932 | ); 933 | canvas.draw(&mesh, DrawParam::default().dest(shake_offset)); 934 | } 935 | } 936 | 937 | // Draw HUD 938 | let hud_text = "Press P to Pause | Press ESC to Quit"; 939 | let hud = graphics::Text::new(hud_text); 940 | canvas.draw( 941 | &hud, 942 | DrawParam::default() 943 | .dest([10.0, 10.0]) 944 | .color(Color::from_rgba(200, 200, 200, 180)), 945 | ); 946 | 947 | // Draw boost energy bars 948 | for (i, cycle) in self.cycles.iter().enumerate() { 949 | if cycle.alive && cycle.player_type == PlayerType::Human { 950 | let bar_x = if i == 0 { 10.0 } else { GRID_WIDTH - 210.0 }; 951 | let bar_y = 40.0; 952 | 953 | // Draw background bar 954 | let bg_mesh = graphics::Mesh::from_data( 955 | ctx, 956 | MeshBuilder::new() 957 | .rectangle( 958 | DrawMode::stroke(2.0), 959 | Rect::new(bar_x, bar_y, 200.0, 20.0), 960 | Color::from_rgb(50, 50, 50), 961 | )? 962 | .build(), 963 | ); 964 | canvas.draw(&bg_mesh, DrawParam::default()); 965 | 966 | // Draw energy fill 967 | let energy_width = (cycle.boost_energy / MAX_BOOST_ENERGY) * 196.0; 968 | let energy_color = if cycle.is_boosting { 969 | Color::from_rgb(255, 255, 100) 970 | } else if cycle.boost_energy > 50.0 { 971 | Color::from_rgb(0, 255, 100) 972 | } else if cycle.boost_energy > 20.0 { 973 | Color::from_rgb(255, 200, 0) 974 | } else { 975 | Color::from_rgb(255, 50, 50) 976 | }; 977 | 978 | if energy_width > 0.0 { 979 | let energy_mesh = graphics::Mesh::from_data( 980 | ctx, 981 | MeshBuilder::new() 982 | .rectangle( 983 | DrawMode::fill(), 984 | Rect::new(bar_x + 2.0, bar_y + 2.0, energy_width, 16.0), 985 | energy_color, 986 | )? 987 | .build(), 988 | ); 989 | canvas.draw(&energy_mesh, DrawParam::default()); 990 | } 991 | 992 | // Draw label 993 | let label = if i == 0 { "P1 Boost" } else { "P2 Boost" }; 994 | let label_text = graphics::Text::new(label); 995 | canvas.draw( 996 | &label_text, 997 | DrawParam::default() 998 | .dest([bar_x, bar_y - 15.0]) 999 | .color(cycle.color) 1000 | .scale([0.8, 0.8]), 1001 | ); 1002 | } 1003 | } 1004 | } 1005 | GameMode::Paused => { 1006 | // No shake in pause mode 1007 | let shake_offset = Point2 { x: 0.0, y: 0.0 }; 1008 | 1009 | // Draw the game state in background (dimmed) 1010 | // First draw the game normally 1011 | let mut mesh_builder = MeshBuilder::new(); 1012 | 1013 | // Draw border 1014 | mesh_builder.rectangle( 1015 | DrawMode::stroke(3.0), 1016 | Rect::new(0.0, 0.0, GRID_WIDTH, GRID_HEIGHT), 1017 | Color::from_rgb(0, 50, 100), 1018 | )?; 1019 | 1020 | let grid_mesh = graphics::Mesh::from_data(ctx, mesh_builder.build()); 1021 | canvas.draw(&grid_mesh, DrawParam::default().dest(shake_offset)); 1022 | 1023 | // Draw trails (dimmed) 1024 | for cycle in &self.cycles { 1025 | if cycle.trail.len() >= 2 { 1026 | let trail_vec: Vec> = cycle.trail.iter().copied().collect(); 1027 | let mut mesh_builder = MeshBuilder::new(); 1028 | 1029 | for i in 0..trail_vec.len() - 1 { 1030 | let dimmed_color = Color::new( 1031 | cycle.color.r * 0.3, 1032 | cycle.color.g * 0.3, 1033 | cycle.color.b * 0.3, 1034 | 0.5, 1035 | ); 1036 | mesh_builder.line( 1037 | &[trail_vec[i], trail_vec[i + 1]], 1038 | CELL_SIZE, 1039 | dimmed_color, 1040 | )?; 1041 | } 1042 | 1043 | let mesh = graphics::Mesh::from_data(ctx, mesh_builder.build()); 1044 | canvas.draw(&mesh, DrawParam::default()); 1045 | } 1046 | } 1047 | 1048 | // Draw pause overlay 1049 | let overlay = graphics::Mesh::from_data( 1050 | ctx, 1051 | MeshBuilder::new() 1052 | .rectangle( 1053 | DrawMode::fill(), 1054 | Rect::new(0.0, 0.0, GRID_WIDTH, GRID_HEIGHT), 1055 | Color::from_rgba(0, 0, 0, 180), 1056 | )? 1057 | .build(), 1058 | ); 1059 | canvas.draw(&overlay, DrawParam::default()); 1060 | 1061 | // Draw pause text 1062 | let pause_text = graphics::Text::new("PAUSED"); 1063 | canvas.draw( 1064 | &pause_text, 1065 | DrawParam::default() 1066 | .dest([GRID_WIDTH / 2.0 - 100.0, 350.0]) 1067 | .color(Color::from_rgb(255, 255, 255)) 1068 | .scale([3.0, 3.0]), 1069 | ); 1070 | 1071 | let resume_text = graphics::Text::new("Press P to Resume"); 1072 | canvas.draw( 1073 | &resume_text, 1074 | DrawParam::default() 1075 | .dest([GRID_WIDTH / 2.0 - 80.0, 450.0]) 1076 | .color(Color::from_rgb(200, 200, 200)), 1077 | ); 1078 | 1079 | let quit_text = graphics::Text::new("Press ESC to Return to Menu"); 1080 | canvas.draw( 1081 | &quit_text, 1082 | DrawParam::default() 1083 | .dest([GRID_WIDTH / 2.0 - 120.0, 500.0]) 1084 | .color(Color::from_rgb(200, 200, 200)), 1085 | ); 1086 | } 1087 | GameMode::GameOver { winner } => { 1088 | let game_over_text = graphics::Text::new("GAME OVER"); 1089 | canvas.draw( 1090 | &game_over_text, 1091 | DrawParam::default() 1092 | .dest([GRID_WIDTH / 2.0 - 200.0, 350.0]) 1093 | .color(Color::from_rgb(255, 0, 0)) 1094 | .scale([3.0, 3.0]), 1095 | ); 1096 | 1097 | let winner_text = graphics::Text::new(winner.clone()); 1098 | canvas.draw( 1099 | &winner_text, 1100 | DrawParam::default() 1101 | .dest([GRID_WIDTH / 2.0 - 100.0, 450.0]) 1102 | .color(Color::from_rgb(0, 255, 0)) 1103 | .scale([1.5, 1.5]), 1104 | ); 1105 | 1106 | let restart_text = graphics::Text::new("Press ESC to return to menu"); 1107 | canvas.draw( 1108 | &restart_text, 1109 | DrawParam::default() 1110 | .dest([GRID_WIDTH / 2.0 - 120.0, 550.0]) 1111 | .color(Color::WHITE), 1112 | ); 1113 | } 1114 | } 1115 | 1116 | canvas.finish(ctx)?; 1117 | Ok(()) 1118 | } 1119 | 1120 | fn key_down_event(&mut self, _ctx: &mut Context, input: KeyInput, _repeat: bool) -> GameResult { 1121 | if let Some(keycode) = input.keycode { 1122 | match self.mode { 1123 | GameMode::Menu => { 1124 | match keycode { 1125 | KeyCode::Key1 => self.start_game(true), 1126 | KeyCode::Key2 => self.start_game(false), 1127 | KeyCode::D => { 1128 | self.ai_difficulty = match self.ai_difficulty { 1129 | AIDifficulty::Easy => AIDifficulty::Medium, 1130 | AIDifficulty::Medium => AIDifficulty::Hard, 1131 | AIDifficulty::Hard => AIDifficulty::Easy, 1132 | }; 1133 | } 1134 | _ => {} 1135 | } 1136 | } 1137 | GameMode::Playing => { 1138 | match keycode { 1139 | KeyCode::P => { 1140 | self.mode = GameMode::Paused; 1141 | } 1142 | KeyCode::Escape => { 1143 | self.mode = GameMode::Menu; 1144 | } 1145 | _ => { 1146 | for cycle in &mut self.cycles { 1147 | cycle.handle_input(keycode, true); 1148 | } 1149 | } 1150 | } 1151 | } 1152 | GameMode::Paused => { 1153 | match keycode { 1154 | KeyCode::P => { 1155 | self.mode = GameMode::Playing; 1156 | } 1157 | KeyCode::Escape => { 1158 | self.mode = GameMode::Menu; 1159 | } 1160 | _ => {} 1161 | } 1162 | } 1163 | GameMode::GameOver { .. } => { 1164 | if keycode == KeyCode::Escape { 1165 | self.mode = GameMode::Menu; 1166 | } 1167 | } 1168 | } 1169 | } 1170 | Ok(()) 1171 | } 1172 | 1173 | fn key_up_event(&mut self, _ctx: &mut Context, input: KeyInput) -> GameResult { 1174 | if let Some(keycode) = input.keycode { 1175 | if let GameMode::Playing = self.mode { 1176 | for cycle in &mut self.cycles { 1177 | cycle.handle_input(keycode, false); 1178 | } 1179 | } 1180 | } 1181 | Ok(()) 1182 | } 1183 | } 1184 | 1185 | fn main() -> GameResult { 1186 | let cb = ContextBuilder::new("lightcycle", "TRON") 1187 | .window_mode(ggez::conf::WindowMode::default() 1188 | .dimensions(GRID_WIDTH, GRID_HEIGHT) 1189 | .resizable(false)); 1190 | let (ctx, event_loop) = cb.build()?; 1191 | let state = GameState::new(); 1192 | event::run(ctx, event_loop, state) 1193 | } 1194 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 4 4 | 5 | [[package]] 6 | name = "ab_glyph" 7 | version = "0.2.31" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "e074464580a518d16a7126262fffaaa47af89d4099d4cb403f8ed938ba12ee7d" 10 | dependencies = [ 11 | "ab_glyph_rasterizer", 12 | "owned_ttf_parser", 13 | ] 14 | 15 | [[package]] 16 | name = "ab_glyph_rasterizer" 17 | version = "0.1.10" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" 20 | 21 | [[package]] 22 | name = "addr2line" 23 | version = "0.24.2" 24 | source = "registry+https://github.com/rust-lang/crates.io-index" 25 | checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" 26 | dependencies = [ 27 | "gimli", 28 | ] 29 | 30 | [[package]] 31 | name = "adler2" 32 | version = "2.0.1" 33 | source = "registry+https://github.com/rust-lang/crates.io-index" 34 | checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" 35 | 36 | [[package]] 37 | name = "ahash" 38 | version = "0.8.12" 39 | source = "registry+https://github.com/rust-lang/crates.io-index" 40 | checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" 41 | dependencies = [ 42 | "cfg-if", 43 | "once_cell", 44 | "version_check", 45 | "zerocopy", 46 | ] 47 | 48 | [[package]] 49 | name = "aho-corasick" 50 | version = "1.1.3" 51 | source = "registry+https://github.com/rust-lang/crates.io-index" 52 | checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 53 | dependencies = [ 54 | "memchr", 55 | ] 56 | 57 | [[package]] 58 | name = "allocator-api2" 59 | version = "0.2.21" 60 | source = "registry+https://github.com/rust-lang/crates.io-index" 61 | checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" 62 | 63 | [[package]] 64 | name = "alsa" 65 | version = "0.9.1" 66 | source = "registry+https://github.com/rust-lang/crates.io-index" 67 | checksum = "ed7572b7ba83a31e20d1b48970ee402d2e3e0537dcfe0a3ff4d6eb7508617d43" 68 | dependencies = [ 69 | "alsa-sys", 70 | "bitflags 2.9.4", 71 | "cfg-if", 72 | "libc", 73 | ] 74 | 75 | [[package]] 76 | name = "alsa-sys" 77 | version = "0.3.1" 78 | source = "registry+https://github.com/rust-lang/crates.io-index" 79 | checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" 80 | dependencies = [ 81 | "libc", 82 | "pkg-config", 83 | ] 84 | 85 | [[package]] 86 | name = "android-activity" 87 | version = "0.4.3" 88 | source = "registry+https://github.com/rust-lang/crates.io-index" 89 | checksum = "64529721f27c2314ced0890ce45e469574a73e5e6fdd6e9da1860eb29285f5e0" 90 | dependencies = [ 91 | "android-properties", 92 | "bitflags 1.3.2", 93 | "cc", 94 | "jni-sys", 95 | "libc", 96 | "log", 97 | "ndk 0.7.0", 98 | "ndk-context", 99 | "ndk-sys 0.4.1+23.1.7779620", 100 | "num_enum 0.6.1", 101 | ] 102 | 103 | [[package]] 104 | name = "android-properties" 105 | version = "0.2.2" 106 | source = "registry+https://github.com/rust-lang/crates.io-index" 107 | checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" 108 | 109 | [[package]] 110 | name = "android_system_properties" 111 | version = "0.1.5" 112 | source = "registry+https://github.com/rust-lang/crates.io-index" 113 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 114 | dependencies = [ 115 | "libc", 116 | ] 117 | 118 | [[package]] 119 | name = "approx" 120 | version = "0.5.1" 121 | source = "registry+https://github.com/rust-lang/crates.io-index" 122 | checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" 123 | dependencies = [ 124 | "num-traits", 125 | ] 126 | 127 | [[package]] 128 | name = "arrayref" 129 | version = "0.3.9" 130 | source = "registry+https://github.com/rust-lang/crates.io-index" 131 | checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" 132 | 133 | [[package]] 134 | name = "arrayvec" 135 | version = "0.7.6" 136 | source = "registry+https://github.com/rust-lang/crates.io-index" 137 | checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" 138 | 139 | [[package]] 140 | name = "ash" 141 | version = "0.37.3+1.3.251" 142 | source = "registry+https://github.com/rust-lang/crates.io-index" 143 | checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" 144 | dependencies = [ 145 | "libloading 0.7.4", 146 | ] 147 | 148 | [[package]] 149 | name = "autocfg" 150 | version = "1.5.0" 151 | source = "registry+https://github.com/rust-lang/crates.io-index" 152 | checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" 153 | 154 | [[package]] 155 | name = "backtrace" 156 | version = "0.3.75" 157 | source = "registry+https://github.com/rust-lang/crates.io-index" 158 | checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" 159 | dependencies = [ 160 | "addr2line", 161 | "cfg-if", 162 | "libc", 163 | "miniz_oxide", 164 | "object", 165 | "rustc-demangle", 166 | "windows-targets 0.52.6", 167 | ] 168 | 169 | [[package]] 170 | name = "bindgen" 171 | version = "0.72.1" 172 | source = "registry+https://github.com/rust-lang/crates.io-index" 173 | checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" 174 | dependencies = [ 175 | "bitflags 2.9.4", 176 | "cexpr", 177 | "clang-sys", 178 | "itertools", 179 | "proc-macro2", 180 | "quote", 181 | "regex", 182 | "rustc-hash 2.1.1", 183 | "shlex", 184 | "syn 2.0.106", 185 | ] 186 | 187 | [[package]] 188 | name = "bit-set" 189 | version = "0.5.3" 190 | source = "registry+https://github.com/rust-lang/crates.io-index" 191 | checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" 192 | dependencies = [ 193 | "bit-vec", 194 | ] 195 | 196 | [[package]] 197 | name = "bit-vec" 198 | version = "0.6.3" 199 | source = "registry+https://github.com/rust-lang/crates.io-index" 200 | checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" 201 | 202 | [[package]] 203 | name = "bitflags" 204 | version = "1.3.2" 205 | source = "registry+https://github.com/rust-lang/crates.io-index" 206 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 207 | 208 | [[package]] 209 | name = "bitflags" 210 | version = "2.9.4" 211 | source = "registry+https://github.com/rust-lang/crates.io-index" 212 | checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" 213 | 214 | [[package]] 215 | name = "block" 216 | version = "0.1.6" 217 | source = "registry+https://github.com/rust-lang/crates.io-index" 218 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 219 | 220 | [[package]] 221 | name = "block-sys" 222 | version = "0.1.0-beta.1" 223 | source = "registry+https://github.com/rust-lang/crates.io-index" 224 | checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" 225 | dependencies = [ 226 | "objc-sys", 227 | ] 228 | 229 | [[package]] 230 | name = "block2" 231 | version = "0.2.0-alpha.6" 232 | source = "registry+https://github.com/rust-lang/crates.io-index" 233 | checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" 234 | dependencies = [ 235 | "block-sys", 236 | "objc2-encode", 237 | ] 238 | 239 | [[package]] 240 | name = "bumpalo" 241 | version = "3.19.0" 242 | source = "registry+https://github.com/rust-lang/crates.io-index" 243 | checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" 244 | 245 | [[package]] 246 | name = "bytecount" 247 | version = "0.6.9" 248 | source = "registry+https://github.com/rust-lang/crates.io-index" 249 | checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" 250 | 251 | [[package]] 252 | name = "bytemuck" 253 | version = "1.23.2" 254 | source = "registry+https://github.com/rust-lang/crates.io-index" 255 | checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" 256 | dependencies = [ 257 | "bytemuck_derive", 258 | ] 259 | 260 | [[package]] 261 | name = "bytemuck_derive" 262 | version = "1.10.1" 263 | source = "registry+https://github.com/rust-lang/crates.io-index" 264 | checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" 265 | dependencies = [ 266 | "proc-macro2", 267 | "quote", 268 | "syn 2.0.106", 269 | ] 270 | 271 | [[package]] 272 | name = "byteorder" 273 | version = "1.5.0" 274 | source = "registry+https://github.com/rust-lang/crates.io-index" 275 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 276 | 277 | [[package]] 278 | name = "bytes" 279 | version = "1.10.1" 280 | source = "registry+https://github.com/rust-lang/crates.io-index" 281 | checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" 282 | 283 | [[package]] 284 | name = "bzip2" 285 | version = "0.4.4" 286 | source = "registry+https://github.com/rust-lang/crates.io-index" 287 | checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" 288 | dependencies = [ 289 | "bzip2-sys", 290 | "libc", 291 | ] 292 | 293 | [[package]] 294 | name = "bzip2-sys" 295 | version = "0.1.13+1.0.8" 296 | source = "registry+https://github.com/rust-lang/crates.io-index" 297 | checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" 298 | dependencies = [ 299 | "cc", 300 | "pkg-config", 301 | ] 302 | 303 | [[package]] 304 | name = "calloop" 305 | version = "0.10.6" 306 | source = "registry+https://github.com/rust-lang/crates.io-index" 307 | checksum = "52e0d00eb1ea24371a97d2da6201c6747a633dc6dc1988ef503403b4c59504a8" 308 | dependencies = [ 309 | "bitflags 1.3.2", 310 | "log", 311 | "nix 0.25.1", 312 | "slotmap", 313 | "thiserror", 314 | "vec_map", 315 | ] 316 | 317 | [[package]] 318 | name = "camino" 319 | version = "1.1.12" 320 | source = "registry+https://github.com/rust-lang/crates.io-index" 321 | checksum = "dd0b03af37dad7a14518b7691d81acb0f8222604ad3d1b02f6b4bed5188c0cd5" 322 | dependencies = [ 323 | "serde", 324 | ] 325 | 326 | [[package]] 327 | name = "cargo-platform" 328 | version = "0.1.9" 329 | source = "registry+https://github.com/rust-lang/crates.io-index" 330 | checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" 331 | dependencies = [ 332 | "serde", 333 | ] 334 | 335 | [[package]] 336 | name = "cargo_metadata" 337 | version = "0.14.2" 338 | source = "registry+https://github.com/rust-lang/crates.io-index" 339 | checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" 340 | dependencies = [ 341 | "camino", 342 | "cargo-platform", 343 | "semver", 344 | "serde", 345 | "serde_json", 346 | ] 347 | 348 | [[package]] 349 | name = "cc" 350 | version = "1.2.35" 351 | source = "registry+https://github.com/rust-lang/crates.io-index" 352 | checksum = "590f9024a68a8c40351881787f1934dc11afd69090f5edb6831464694d836ea3" 353 | dependencies = [ 354 | "find-msvc-tools", 355 | "jobserver", 356 | "libc", 357 | "shlex", 358 | ] 359 | 360 | [[package]] 361 | name = "cesu8" 362 | version = "1.1.0" 363 | source = "registry+https://github.com/rust-lang/crates.io-index" 364 | checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 365 | 366 | [[package]] 367 | name = "cexpr" 368 | version = "0.6.0" 369 | source = "registry+https://github.com/rust-lang/crates.io-index" 370 | checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" 371 | dependencies = [ 372 | "nom", 373 | ] 374 | 375 | [[package]] 376 | name = "cfg-if" 377 | version = "1.0.3" 378 | source = "registry+https://github.com/rust-lang/crates.io-index" 379 | checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" 380 | 381 | [[package]] 382 | name = "cfg_aliases" 383 | version = "0.1.1" 384 | source = "registry+https://github.com/rust-lang/crates.io-index" 385 | checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" 386 | 387 | [[package]] 388 | name = "cfg_aliases" 389 | version = "0.2.1" 390 | source = "registry+https://github.com/rust-lang/crates.io-index" 391 | checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 392 | 393 | [[package]] 394 | name = "clang-sys" 395 | version = "1.8.1" 396 | source = "registry+https://github.com/rust-lang/crates.io-index" 397 | checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" 398 | dependencies = [ 399 | "glob", 400 | "libc", 401 | "libloading 0.8.8", 402 | ] 403 | 404 | [[package]] 405 | name = "claxon" 406 | version = "0.4.3" 407 | source = "registry+https://github.com/rust-lang/crates.io-index" 408 | checksum = "4bfbf56724aa9eca8afa4fcfadeb479e722935bb2a0900c2d37e0cc477af0688" 409 | 410 | [[package]] 411 | name = "codespan-reporting" 412 | version = "0.11.1" 413 | source = "registry+https://github.com/rust-lang/crates.io-index" 414 | checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" 415 | dependencies = [ 416 | "termcolor", 417 | "unicode-width", 418 | ] 419 | 420 | [[package]] 421 | name = "color_quant" 422 | version = "1.1.0" 423 | source = "registry+https://github.com/rust-lang/crates.io-index" 424 | checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" 425 | 426 | [[package]] 427 | name = "com-rs" 428 | version = "0.2.1" 429 | source = "registry+https://github.com/rust-lang/crates.io-index" 430 | checksum = "bf43edc576402991846b093a7ca18a3477e0ef9c588cde84964b5d3e43016642" 431 | 432 | [[package]] 433 | name = "combine" 434 | version = "4.6.7" 435 | source = "registry+https://github.com/rust-lang/crates.io-index" 436 | checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" 437 | dependencies = [ 438 | "bytes", 439 | "memchr", 440 | ] 441 | 442 | [[package]] 443 | name = "core-foundation" 444 | version = "0.9.4" 445 | source = "registry+https://github.com/rust-lang/crates.io-index" 446 | checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 447 | dependencies = [ 448 | "core-foundation-sys", 449 | "libc", 450 | ] 451 | 452 | [[package]] 453 | name = "core-foundation-sys" 454 | version = "0.8.7" 455 | source = "registry+https://github.com/rust-lang/crates.io-index" 456 | checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 457 | 458 | [[package]] 459 | name = "core-graphics" 460 | version = "0.22.3" 461 | source = "registry+https://github.com/rust-lang/crates.io-index" 462 | checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" 463 | dependencies = [ 464 | "bitflags 1.3.2", 465 | "core-foundation", 466 | "core-graphics-types", 467 | "foreign-types", 468 | "libc", 469 | ] 470 | 471 | [[package]] 472 | name = "core-graphics-types" 473 | version = "0.1.3" 474 | source = "registry+https://github.com/rust-lang/crates.io-index" 475 | checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" 476 | dependencies = [ 477 | "bitflags 1.3.2", 478 | "core-foundation", 479 | "libc", 480 | ] 481 | 482 | [[package]] 483 | name = "coreaudio-rs" 484 | version = "0.11.3" 485 | source = "registry+https://github.com/rust-lang/crates.io-index" 486 | checksum = "321077172d79c662f64f5071a03120748d5bb652f5231570141be24cfcd2bace" 487 | dependencies = [ 488 | "bitflags 1.3.2", 489 | "core-foundation-sys", 490 | "coreaudio-sys", 491 | ] 492 | 493 | [[package]] 494 | name = "coreaudio-sys" 495 | version = "0.2.17" 496 | source = "registry+https://github.com/rust-lang/crates.io-index" 497 | checksum = "ceec7a6067e62d6f931a2baf6f3a751f4a892595bcec1461a3c94ef9949864b6" 498 | dependencies = [ 499 | "bindgen", 500 | ] 501 | 502 | [[package]] 503 | name = "cpal" 504 | version = "0.15.3" 505 | source = "registry+https://github.com/rust-lang/crates.io-index" 506 | checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779" 507 | dependencies = [ 508 | "alsa", 509 | "core-foundation-sys", 510 | "coreaudio-rs", 511 | "dasp_sample", 512 | "jni", 513 | "js-sys", 514 | "libc", 515 | "mach2", 516 | "ndk 0.8.0", 517 | "ndk-context", 518 | "oboe", 519 | "wasm-bindgen", 520 | "wasm-bindgen-futures", 521 | "web-sys", 522 | "windows 0.54.0", 523 | ] 524 | 525 | [[package]] 526 | name = "crc32fast" 527 | version = "1.5.0" 528 | source = "registry+https://github.com/rust-lang/crates.io-index" 529 | checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" 530 | dependencies = [ 531 | "cfg-if", 532 | ] 533 | 534 | [[package]] 535 | name = "crevice" 536 | version = "0.13.0" 537 | source = "registry+https://github.com/rust-lang/crates.io-index" 538 | checksum = "1ca0647ab3b3b1554ec55f24ba8821123474c60c78964a214f5f9195bf632df4" 539 | dependencies = [ 540 | "bytemuck", 541 | "crevice-derive", 542 | "mint", 543 | ] 544 | 545 | [[package]] 546 | name = "crevice-derive" 547 | version = "0.10.0" 548 | source = "registry+https://github.com/rust-lang/crates.io-index" 549 | checksum = "2320c07ceb3e491e2bd09ade90a91c29a42d9553f1bde60c945cb5c34958b26e" 550 | dependencies = [ 551 | "proc-macro2", 552 | "quote", 553 | "syn 1.0.109", 554 | ] 555 | 556 | [[package]] 557 | name = "crossbeam-channel" 558 | version = "0.5.15" 559 | source = "registry+https://github.com/rust-lang/crates.io-index" 560 | checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" 561 | dependencies = [ 562 | "crossbeam-utils", 563 | ] 564 | 565 | [[package]] 566 | name = "crossbeam-deque" 567 | version = "0.8.6" 568 | source = "registry+https://github.com/rust-lang/crates.io-index" 569 | checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" 570 | dependencies = [ 571 | "crossbeam-epoch", 572 | "crossbeam-utils", 573 | ] 574 | 575 | [[package]] 576 | name = "crossbeam-epoch" 577 | version = "0.9.18" 578 | source = "registry+https://github.com/rust-lang/crates.io-index" 579 | checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 580 | dependencies = [ 581 | "crossbeam-utils", 582 | ] 583 | 584 | [[package]] 585 | name = "crossbeam-utils" 586 | version = "0.8.21" 587 | source = "registry+https://github.com/rust-lang/crates.io-index" 588 | checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 589 | 590 | [[package]] 591 | name = "d3d12" 592 | version = "0.6.0" 593 | source = "registry+https://github.com/rust-lang/crates.io-index" 594 | checksum = "d8f0de2f5a8e7bd4a9eec0e3c781992a4ce1724f68aec7d7a3715344de8b39da" 595 | dependencies = [ 596 | "bitflags 1.3.2", 597 | "libloading 0.7.4", 598 | "winapi", 599 | ] 600 | 601 | [[package]] 602 | name = "dasp_sample" 603 | version = "0.11.0" 604 | source = "registry+https://github.com/rust-lang/crates.io-index" 605 | checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" 606 | 607 | [[package]] 608 | name = "directories" 609 | version = "5.0.1" 610 | source = "registry+https://github.com/rust-lang/crates.io-index" 611 | checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" 612 | dependencies = [ 613 | "dirs-sys", 614 | ] 615 | 616 | [[package]] 617 | name = "dirs-sys" 618 | version = "0.4.1" 619 | source = "registry+https://github.com/rust-lang/crates.io-index" 620 | checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" 621 | dependencies = [ 622 | "libc", 623 | "option-ext", 624 | "redox_users", 625 | "windows-sys 0.48.0", 626 | ] 627 | 628 | [[package]] 629 | name = "dispatch" 630 | version = "0.2.0" 631 | source = "registry+https://github.com/rust-lang/crates.io-index" 632 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 633 | 634 | [[package]] 635 | name = "dlib" 636 | version = "0.5.2" 637 | source = "registry+https://github.com/rust-lang/crates.io-index" 638 | checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" 639 | dependencies = [ 640 | "libloading 0.8.8", 641 | ] 642 | 643 | [[package]] 644 | name = "downcast-rs" 645 | version = "1.2.1" 646 | source = "registry+https://github.com/rust-lang/crates.io-index" 647 | checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" 648 | 649 | [[package]] 650 | name = "either" 651 | version = "1.15.0" 652 | source = "registry+https://github.com/rust-lang/crates.io-index" 653 | checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" 654 | 655 | [[package]] 656 | name = "encoding_rs" 657 | version = "0.8.35" 658 | source = "registry+https://github.com/rust-lang/crates.io-index" 659 | checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" 660 | dependencies = [ 661 | "cfg-if", 662 | ] 663 | 664 | [[package]] 665 | name = "equivalent" 666 | version = "1.0.2" 667 | source = "registry+https://github.com/rust-lang/crates.io-index" 668 | checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 669 | 670 | [[package]] 671 | name = "errno" 672 | version = "0.3.13" 673 | source = "registry+https://github.com/rust-lang/crates.io-index" 674 | checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" 675 | dependencies = [ 676 | "libc", 677 | "windows-sys 0.60.2", 678 | ] 679 | 680 | [[package]] 681 | name = "error-chain" 682 | version = "0.12.4" 683 | source = "registry+https://github.com/rust-lang/crates.io-index" 684 | checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" 685 | dependencies = [ 686 | "version_check", 687 | ] 688 | 689 | [[package]] 690 | name = "euclid" 691 | version = "0.22.11" 692 | source = "registry+https://github.com/rust-lang/crates.io-index" 693 | checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" 694 | dependencies = [ 695 | "num-traits", 696 | ] 697 | 698 | [[package]] 699 | name = "fastrand" 700 | version = "2.3.0" 701 | source = "registry+https://github.com/rust-lang/crates.io-index" 702 | checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 703 | 704 | [[package]] 705 | name = "fdeflate" 706 | version = "0.3.7" 707 | source = "registry+https://github.com/rust-lang/crates.io-index" 708 | checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" 709 | dependencies = [ 710 | "simd-adler32", 711 | ] 712 | 713 | [[package]] 714 | name = "find-msvc-tools" 715 | version = "0.1.0" 716 | source = "registry+https://github.com/rust-lang/crates.io-index" 717 | checksum = "e178e4fba8a2726903f6ba98a6d221e76f9c12c650d5dc0e6afdc50677b49650" 718 | 719 | [[package]] 720 | name = "flate2" 721 | version = "1.1.2" 722 | source = "registry+https://github.com/rust-lang/crates.io-index" 723 | checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" 724 | dependencies = [ 725 | "crc32fast", 726 | "miniz_oxide", 727 | ] 728 | 729 | [[package]] 730 | name = "float_next_after" 731 | version = "1.0.0" 732 | source = "registry+https://github.com/rust-lang/crates.io-index" 733 | checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8" 734 | 735 | [[package]] 736 | name = "fnv" 737 | version = "1.0.7" 738 | source = "registry+https://github.com/rust-lang/crates.io-index" 739 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 740 | 741 | [[package]] 742 | name = "foreign-types" 743 | version = "0.3.2" 744 | source = "registry+https://github.com/rust-lang/crates.io-index" 745 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 746 | dependencies = [ 747 | "foreign-types-shared", 748 | ] 749 | 750 | [[package]] 751 | name = "foreign-types-shared" 752 | version = "0.1.1" 753 | source = "registry+https://github.com/rust-lang/crates.io-index" 754 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 755 | 756 | [[package]] 757 | name = "getrandom" 758 | version = "0.2.16" 759 | source = "registry+https://github.com/rust-lang/crates.io-index" 760 | checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" 761 | dependencies = [ 762 | "cfg-if", 763 | "libc", 764 | "wasi 0.11.1+wasi-snapshot-preview1", 765 | ] 766 | 767 | [[package]] 768 | name = "getrandom" 769 | version = "0.3.3" 770 | source = "registry+https://github.com/rust-lang/crates.io-index" 771 | checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" 772 | dependencies = [ 773 | "cfg-if", 774 | "libc", 775 | "r-efi", 776 | "wasi 0.14.3+wasi-0.2.4", 777 | ] 778 | 779 | [[package]] 780 | name = "ggez" 781 | version = "0.9.3" 782 | source = "registry+https://github.com/rust-lang/crates.io-index" 783 | checksum = "faa9c608ac25c61dd7dc4b04201179373e8fe0cfa0a3801690d1341e2149c871" 784 | dependencies = [ 785 | "approx", 786 | "bitflags 2.9.4", 787 | "bytemuck", 788 | "crevice", 789 | "directories", 790 | "gilrs", 791 | "glam", 792 | "glyph_brush", 793 | "image", 794 | "log", 795 | "lyon", 796 | "memoffset 0.8.0", 797 | "mint", 798 | "ordered-float 3.9.2", 799 | "pollster", 800 | "rodio", 801 | "serde", 802 | "skeptic", 803 | "smart-default", 804 | "toml", 805 | "typed-arena", 806 | "wgpu", 807 | "winit", 808 | "zip", 809 | ] 810 | 811 | [[package]] 812 | name = "gif" 813 | version = "0.13.3" 814 | source = "registry+https://github.com/rust-lang/crates.io-index" 815 | checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b" 816 | dependencies = [ 817 | "color_quant", 818 | "weezl", 819 | ] 820 | 821 | [[package]] 822 | name = "gilrs" 823 | version = "0.10.10" 824 | source = "registry+https://github.com/rust-lang/crates.io-index" 825 | checksum = "a556964c6d62458084356ce9770676f5104bd667e12e9a795691076e8a17c5cf" 826 | dependencies = [ 827 | "fnv", 828 | "gilrs-core", 829 | "log", 830 | "uuid", 831 | "vec_map", 832 | ] 833 | 834 | [[package]] 835 | name = "gilrs-core" 836 | version = "0.5.15" 837 | source = "registry+https://github.com/rust-lang/crates.io-index" 838 | checksum = "732dadc05170599ddec9a89653f10d7a2af54da9181b3fa6e2bd49907ec8f7e4" 839 | dependencies = [ 840 | "core-foundation", 841 | "inotify", 842 | "io-kit-sys", 843 | "js-sys", 844 | "libc", 845 | "libudev-sys", 846 | "log", 847 | "nix 0.29.0", 848 | "uuid", 849 | "vec_map", 850 | "wasm-bindgen", 851 | "web-sys", 852 | "windows 0.58.0", 853 | ] 854 | 855 | [[package]] 856 | name = "gimli" 857 | version = "0.31.1" 858 | source = "registry+https://github.com/rust-lang/crates.io-index" 859 | checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" 860 | 861 | [[package]] 862 | name = "glam" 863 | version = "0.24.2" 864 | source = "registry+https://github.com/rust-lang/crates.io-index" 865 | checksum = "b5418c17512bdf42730f9032c74e1ae39afc408745ebb2acf72fbc4691c17945" 866 | dependencies = [ 867 | "mint", 868 | ] 869 | 870 | [[package]] 871 | name = "glob" 872 | version = "0.3.3" 873 | source = "registry+https://github.com/rust-lang/crates.io-index" 874 | checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" 875 | 876 | [[package]] 877 | name = "glow" 878 | version = "0.12.3" 879 | source = "registry+https://github.com/rust-lang/crates.io-index" 880 | checksum = "ca0fe580e4b60a8ab24a868bc08e2f03cbcb20d3d676601fa909386713333728" 881 | dependencies = [ 882 | "js-sys", 883 | "slotmap", 884 | "wasm-bindgen", 885 | "web-sys", 886 | ] 887 | 888 | [[package]] 889 | name = "glyph_brush" 890 | version = "0.7.12" 891 | source = "registry+https://github.com/rust-lang/crates.io-index" 892 | checksum = "0060f4ed4ef64a5876d9836d7d6c9ed43a463f3ca431682bec1c326064c8c93e" 893 | dependencies = [ 894 | "glyph_brush_draw_cache", 895 | "glyph_brush_layout", 896 | "ordered-float 5.0.0", 897 | "rustc-hash 2.1.1", 898 | "twox-hash", 899 | ] 900 | 901 | [[package]] 902 | name = "glyph_brush_draw_cache" 903 | version = "0.1.6" 904 | source = "registry+https://github.com/rust-lang/crates.io-index" 905 | checksum = "4bb6c910def52365fef3f439a6b50a4d5c11b28eec4cf6c191f6dfea18e88d7f" 906 | dependencies = [ 907 | "ab_glyph", 908 | "crossbeam-channel", 909 | "crossbeam-deque", 910 | "linked-hash-map", 911 | "rayon", 912 | "rustc-hash 2.1.1", 913 | ] 914 | 915 | [[package]] 916 | name = "glyph_brush_layout" 917 | version = "0.2.4" 918 | source = "registry+https://github.com/rust-lang/crates.io-index" 919 | checksum = "7b1e288bfd2f6c0313f78bf5aa538356ad481a3bb97e9b7f93220ab0066c5992" 920 | dependencies = [ 921 | "ab_glyph", 922 | "approx", 923 | "xi-unicode", 924 | ] 925 | 926 | [[package]] 927 | name = "gpu-alloc" 928 | version = "0.5.4" 929 | source = "registry+https://github.com/rust-lang/crates.io-index" 930 | checksum = "22beaafc29b38204457ea030f6fb7a84c9e4dd1b86e311ba0542533453d87f62" 931 | dependencies = [ 932 | "bitflags 1.3.2", 933 | "gpu-alloc-types", 934 | ] 935 | 936 | [[package]] 937 | name = "gpu-alloc-types" 938 | version = "0.2.0" 939 | source = "registry+https://github.com/rust-lang/crates.io-index" 940 | checksum = "54804d0d6bc9d7f26db4eaec1ad10def69b599315f487d32c334a80d1efe67a5" 941 | dependencies = [ 942 | "bitflags 1.3.2", 943 | ] 944 | 945 | [[package]] 946 | name = "gpu-allocator" 947 | version = "0.22.0" 948 | source = "registry+https://github.com/rust-lang/crates.io-index" 949 | checksum = "ce95f9e2e11c2c6fadfce42b5af60005db06576f231f5c92550fdded43c423e8" 950 | dependencies = [ 951 | "backtrace", 952 | "log", 953 | "thiserror", 954 | "winapi", 955 | "windows 0.44.0", 956 | ] 957 | 958 | [[package]] 959 | name = "gpu-descriptor" 960 | version = "0.2.4" 961 | source = "registry+https://github.com/rust-lang/crates.io-index" 962 | checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" 963 | dependencies = [ 964 | "bitflags 2.9.4", 965 | "gpu-descriptor-types", 966 | "hashbrown 0.14.5", 967 | ] 968 | 969 | [[package]] 970 | name = "gpu-descriptor-types" 971 | version = "0.1.2" 972 | source = "registry+https://github.com/rust-lang/crates.io-index" 973 | checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" 974 | dependencies = [ 975 | "bitflags 2.9.4", 976 | ] 977 | 978 | [[package]] 979 | name = "hashbrown" 980 | version = "0.12.3" 981 | source = "registry+https://github.com/rust-lang/crates.io-index" 982 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 983 | 984 | [[package]] 985 | name = "hashbrown" 986 | version = "0.14.5" 987 | source = "registry+https://github.com/rust-lang/crates.io-index" 988 | checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 989 | dependencies = [ 990 | "ahash", 991 | "allocator-api2", 992 | ] 993 | 994 | [[package]] 995 | name = "hashbrown" 996 | version = "0.15.5" 997 | source = "registry+https://github.com/rust-lang/crates.io-index" 998 | checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" 999 | 1000 | [[package]] 1001 | name = "hassle-rs" 1002 | version = "0.10.0" 1003 | source = "registry+https://github.com/rust-lang/crates.io-index" 1004 | checksum = "1397650ee315e8891a0df210707f0fc61771b0cc518c3023896064c5407cb3b0" 1005 | dependencies = [ 1006 | "bitflags 1.3.2", 1007 | "com-rs", 1008 | "libc", 1009 | "libloading 0.7.4", 1010 | "thiserror", 1011 | "widestring", 1012 | "winapi", 1013 | ] 1014 | 1015 | [[package]] 1016 | name = "hexf-parse" 1017 | version = "0.2.1" 1018 | source = "registry+https://github.com/rust-lang/crates.io-index" 1019 | checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" 1020 | 1021 | [[package]] 1022 | name = "hound" 1023 | version = "3.5.1" 1024 | source = "registry+https://github.com/rust-lang/crates.io-index" 1025 | checksum = "62adaabb884c94955b19907d60019f4e145d091c75345379e70d1ee696f7854f" 1026 | 1027 | [[package]] 1028 | name = "image" 1029 | version = "0.24.9" 1030 | source = "registry+https://github.com/rust-lang/crates.io-index" 1031 | checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" 1032 | dependencies = [ 1033 | "bytemuck", 1034 | "byteorder", 1035 | "color_quant", 1036 | "gif", 1037 | "jpeg-decoder", 1038 | "num-traits", 1039 | "png", 1040 | "tiff", 1041 | ] 1042 | 1043 | [[package]] 1044 | name = "indexmap" 1045 | version = "1.9.3" 1046 | source = "registry+https://github.com/rust-lang/crates.io-index" 1047 | checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" 1048 | dependencies = [ 1049 | "autocfg", 1050 | "hashbrown 0.12.3", 1051 | ] 1052 | 1053 | [[package]] 1054 | name = "indexmap" 1055 | version = "2.11.0" 1056 | source = "registry+https://github.com/rust-lang/crates.io-index" 1057 | checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" 1058 | dependencies = [ 1059 | "equivalent", 1060 | "hashbrown 0.15.5", 1061 | ] 1062 | 1063 | [[package]] 1064 | name = "inotify" 1065 | version = "0.10.2" 1066 | source = "registry+https://github.com/rust-lang/crates.io-index" 1067 | checksum = "fdd168d97690d0b8c412d6b6c10360277f4d7ee495c5d0d5d5fe0854923255cc" 1068 | dependencies = [ 1069 | "bitflags 1.3.2", 1070 | "inotify-sys", 1071 | "libc", 1072 | ] 1073 | 1074 | [[package]] 1075 | name = "inotify-sys" 1076 | version = "0.1.5" 1077 | source = "registry+https://github.com/rust-lang/crates.io-index" 1078 | checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" 1079 | dependencies = [ 1080 | "libc", 1081 | ] 1082 | 1083 | [[package]] 1084 | name = "instant" 1085 | version = "0.1.13" 1086 | source = "registry+https://github.com/rust-lang/crates.io-index" 1087 | checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" 1088 | dependencies = [ 1089 | "cfg-if", 1090 | "js-sys", 1091 | "wasm-bindgen", 1092 | "web-sys", 1093 | ] 1094 | 1095 | [[package]] 1096 | name = "io-kit-sys" 1097 | version = "0.4.1" 1098 | source = "registry+https://github.com/rust-lang/crates.io-index" 1099 | checksum = "617ee6cf8e3f66f3b4ea67a4058564628cde41901316e19f559e14c7c72c5e7b" 1100 | dependencies = [ 1101 | "core-foundation-sys", 1102 | "mach2", 1103 | ] 1104 | 1105 | [[package]] 1106 | name = "itertools" 1107 | version = "0.13.0" 1108 | source = "registry+https://github.com/rust-lang/crates.io-index" 1109 | checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" 1110 | dependencies = [ 1111 | "either", 1112 | ] 1113 | 1114 | [[package]] 1115 | name = "itoa" 1116 | version = "1.0.15" 1117 | source = "registry+https://github.com/rust-lang/crates.io-index" 1118 | checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" 1119 | 1120 | [[package]] 1121 | name = "jni" 1122 | version = "0.21.1" 1123 | source = "registry+https://github.com/rust-lang/crates.io-index" 1124 | checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" 1125 | dependencies = [ 1126 | "cesu8", 1127 | "cfg-if", 1128 | "combine", 1129 | "jni-sys", 1130 | "log", 1131 | "thiserror", 1132 | "walkdir", 1133 | "windows-sys 0.45.0", 1134 | ] 1135 | 1136 | [[package]] 1137 | name = "jni-sys" 1138 | version = "0.3.0" 1139 | source = "registry+https://github.com/rust-lang/crates.io-index" 1140 | checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 1141 | 1142 | [[package]] 1143 | name = "jobserver" 1144 | version = "0.1.34" 1145 | source = "registry+https://github.com/rust-lang/crates.io-index" 1146 | checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" 1147 | dependencies = [ 1148 | "getrandom 0.3.3", 1149 | "libc", 1150 | ] 1151 | 1152 | [[package]] 1153 | name = "jpeg-decoder" 1154 | version = "0.3.2" 1155 | source = "registry+https://github.com/rust-lang/crates.io-index" 1156 | checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07" 1157 | 1158 | [[package]] 1159 | name = "js-sys" 1160 | version = "0.3.77" 1161 | source = "registry+https://github.com/rust-lang/crates.io-index" 1162 | checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" 1163 | dependencies = [ 1164 | "once_cell", 1165 | "wasm-bindgen", 1166 | ] 1167 | 1168 | [[package]] 1169 | name = "khronos-egl" 1170 | version = "4.1.0" 1171 | source = "registry+https://github.com/rust-lang/crates.io-index" 1172 | checksum = "8c2352bd1d0bceb871cb9d40f24360c8133c11d7486b68b5381c1dd1a32015e3" 1173 | dependencies = [ 1174 | "libc", 1175 | "libloading 0.7.4", 1176 | "pkg-config", 1177 | ] 1178 | 1179 | [[package]] 1180 | name = "lazy_static" 1181 | version = "1.5.0" 1182 | source = "registry+https://github.com/rust-lang/crates.io-index" 1183 | checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 1184 | 1185 | [[package]] 1186 | name = "lewton" 1187 | version = "0.10.2" 1188 | source = "registry+https://github.com/rust-lang/crates.io-index" 1189 | checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030" 1190 | dependencies = [ 1191 | "byteorder", 1192 | "ogg", 1193 | "tinyvec", 1194 | ] 1195 | 1196 | [[package]] 1197 | name = "libc" 1198 | version = "0.2.175" 1199 | source = "registry+https://github.com/rust-lang/crates.io-index" 1200 | checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" 1201 | 1202 | [[package]] 1203 | name = "libloading" 1204 | version = "0.7.4" 1205 | source = "registry+https://github.com/rust-lang/crates.io-index" 1206 | checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" 1207 | dependencies = [ 1208 | "cfg-if", 1209 | "winapi", 1210 | ] 1211 | 1212 | [[package]] 1213 | name = "libloading" 1214 | version = "0.8.8" 1215 | source = "registry+https://github.com/rust-lang/crates.io-index" 1216 | checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" 1217 | dependencies = [ 1218 | "cfg-if", 1219 | "windows-targets 0.53.3", 1220 | ] 1221 | 1222 | [[package]] 1223 | name = "libm" 1224 | version = "0.2.15" 1225 | source = "registry+https://github.com/rust-lang/crates.io-index" 1226 | checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" 1227 | 1228 | [[package]] 1229 | name = "libredox" 1230 | version = "0.1.9" 1231 | source = "registry+https://github.com/rust-lang/crates.io-index" 1232 | checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" 1233 | dependencies = [ 1234 | "bitflags 2.9.4", 1235 | "libc", 1236 | "redox_syscall 0.5.17", 1237 | ] 1238 | 1239 | [[package]] 1240 | name = "libudev-sys" 1241 | version = "0.1.4" 1242 | source = "registry+https://github.com/rust-lang/crates.io-index" 1243 | checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" 1244 | dependencies = [ 1245 | "libc", 1246 | "pkg-config", 1247 | ] 1248 | 1249 | [[package]] 1250 | name = "lightcycle" 1251 | version = "0.1.0" 1252 | dependencies = [ 1253 | "ggez", 1254 | "rand 0.8.5", 1255 | ] 1256 | 1257 | [[package]] 1258 | name = "linked-hash-map" 1259 | version = "0.5.6" 1260 | source = "registry+https://github.com/rust-lang/crates.io-index" 1261 | checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" 1262 | 1263 | [[package]] 1264 | name = "linux-raw-sys" 1265 | version = "0.9.4" 1266 | source = "registry+https://github.com/rust-lang/crates.io-index" 1267 | checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" 1268 | 1269 | [[package]] 1270 | name = "lock_api" 1271 | version = "0.4.13" 1272 | source = "registry+https://github.com/rust-lang/crates.io-index" 1273 | checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" 1274 | dependencies = [ 1275 | "autocfg", 1276 | "scopeguard", 1277 | ] 1278 | 1279 | [[package]] 1280 | name = "log" 1281 | version = "0.4.27" 1282 | source = "registry+https://github.com/rust-lang/crates.io-index" 1283 | checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" 1284 | 1285 | [[package]] 1286 | name = "lyon" 1287 | version = "1.0.1" 1288 | source = "registry+https://github.com/rust-lang/crates.io-index" 1289 | checksum = "91e7f9cda98b5430809e63ca5197b06c7d191bf7e26dfc467d5a3f0290e2a74f" 1290 | dependencies = [ 1291 | "lyon_algorithms", 1292 | "lyon_tessellation", 1293 | ] 1294 | 1295 | [[package]] 1296 | name = "lyon_algorithms" 1297 | version = "1.0.5" 1298 | source = "registry+https://github.com/rust-lang/crates.io-index" 1299 | checksum = "f13c9be19d257c7d37e70608ed858e8eab4b2afcea2e3c9a622e892acbf43c08" 1300 | dependencies = [ 1301 | "lyon_path", 1302 | "num-traits", 1303 | ] 1304 | 1305 | [[package]] 1306 | name = "lyon_geom" 1307 | version = "1.0.6" 1308 | source = "registry+https://github.com/rust-lang/crates.io-index" 1309 | checksum = "8af69edc087272df438b3ee436c4bb6d7c04aa8af665cfd398feae627dbd8570" 1310 | dependencies = [ 1311 | "arrayvec", 1312 | "euclid", 1313 | "num-traits", 1314 | ] 1315 | 1316 | [[package]] 1317 | name = "lyon_path" 1318 | version = "1.0.7" 1319 | source = "registry+https://github.com/rust-lang/crates.io-index" 1320 | checksum = "0047f508cd7a85ad6bad9518f68cce7b1bf6b943fb71f6da0ee3bc1e8cb75f25" 1321 | dependencies = [ 1322 | "lyon_geom", 1323 | "num-traits", 1324 | ] 1325 | 1326 | [[package]] 1327 | name = "lyon_tessellation" 1328 | version = "1.0.15" 1329 | source = "registry+https://github.com/rust-lang/crates.io-index" 1330 | checksum = "579d42360a4b09846eff2feef28f538696c7d6c7439bfa65874ff3cbe0951b2c" 1331 | dependencies = [ 1332 | "float_next_after", 1333 | "lyon_path", 1334 | "num-traits", 1335 | ] 1336 | 1337 | [[package]] 1338 | name = "mach2" 1339 | version = "0.4.3" 1340 | source = "registry+https://github.com/rust-lang/crates.io-index" 1341 | checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" 1342 | dependencies = [ 1343 | "libc", 1344 | ] 1345 | 1346 | [[package]] 1347 | name = "malloc_buf" 1348 | version = "0.0.6" 1349 | source = "registry+https://github.com/rust-lang/crates.io-index" 1350 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 1351 | dependencies = [ 1352 | "libc", 1353 | ] 1354 | 1355 | [[package]] 1356 | name = "memchr" 1357 | version = "2.7.5" 1358 | source = "registry+https://github.com/rust-lang/crates.io-index" 1359 | checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" 1360 | 1361 | [[package]] 1362 | name = "memmap2" 1363 | version = "0.5.10" 1364 | source = "registry+https://github.com/rust-lang/crates.io-index" 1365 | checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" 1366 | dependencies = [ 1367 | "libc", 1368 | ] 1369 | 1370 | [[package]] 1371 | name = "memoffset" 1372 | version = "0.6.5" 1373 | source = "registry+https://github.com/rust-lang/crates.io-index" 1374 | checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" 1375 | dependencies = [ 1376 | "autocfg", 1377 | ] 1378 | 1379 | [[package]] 1380 | name = "memoffset" 1381 | version = "0.8.0" 1382 | source = "registry+https://github.com/rust-lang/crates.io-index" 1383 | checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" 1384 | dependencies = [ 1385 | "autocfg", 1386 | ] 1387 | 1388 | [[package]] 1389 | name = "metal" 1390 | version = "0.24.0" 1391 | source = "registry+https://github.com/rust-lang/crates.io-index" 1392 | checksum = "de11355d1f6781482d027a3b4d4de7825dcedb197bf573e0596d00008402d060" 1393 | dependencies = [ 1394 | "bitflags 1.3.2", 1395 | "block", 1396 | "core-graphics-types", 1397 | "foreign-types", 1398 | "log", 1399 | "objc", 1400 | ] 1401 | 1402 | [[package]] 1403 | name = "minimal-lexical" 1404 | version = "0.2.1" 1405 | source = "registry+https://github.com/rust-lang/crates.io-index" 1406 | checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 1407 | 1408 | [[package]] 1409 | name = "miniz_oxide" 1410 | version = "0.8.9" 1411 | source = "registry+https://github.com/rust-lang/crates.io-index" 1412 | checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" 1413 | dependencies = [ 1414 | "adler2", 1415 | "simd-adler32", 1416 | ] 1417 | 1418 | [[package]] 1419 | name = "mint" 1420 | version = "0.5.9" 1421 | source = "registry+https://github.com/rust-lang/crates.io-index" 1422 | checksum = "e53debba6bda7a793e5f99b8dacf19e626084f525f7829104ba9898f367d85ff" 1423 | 1424 | [[package]] 1425 | name = "mio" 1426 | version = "0.8.11" 1427 | source = "registry+https://github.com/rust-lang/crates.io-index" 1428 | checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" 1429 | dependencies = [ 1430 | "libc", 1431 | "log", 1432 | "wasi 0.11.1+wasi-snapshot-preview1", 1433 | "windows-sys 0.48.0", 1434 | ] 1435 | 1436 | [[package]] 1437 | name = "naga" 1438 | version = "0.12.3" 1439 | source = "registry+https://github.com/rust-lang/crates.io-index" 1440 | checksum = "bbcc2e0513220fd2b598e6068608d4462db20322c0e77e47f6f488dfcfc279cb" 1441 | dependencies = [ 1442 | "bit-set", 1443 | "bitflags 1.3.2", 1444 | "codespan-reporting", 1445 | "hexf-parse", 1446 | "indexmap 1.9.3", 1447 | "log", 1448 | "num-traits", 1449 | "rustc-hash 1.1.0", 1450 | "spirv", 1451 | "termcolor", 1452 | "thiserror", 1453 | "unicode-xid", 1454 | ] 1455 | 1456 | [[package]] 1457 | name = "ndk" 1458 | version = "0.7.0" 1459 | source = "registry+https://github.com/rust-lang/crates.io-index" 1460 | checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" 1461 | dependencies = [ 1462 | "bitflags 1.3.2", 1463 | "jni-sys", 1464 | "ndk-sys 0.4.1+23.1.7779620", 1465 | "num_enum 0.5.11", 1466 | "raw-window-handle", 1467 | "thiserror", 1468 | ] 1469 | 1470 | [[package]] 1471 | name = "ndk" 1472 | version = "0.8.0" 1473 | source = "registry+https://github.com/rust-lang/crates.io-index" 1474 | checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" 1475 | dependencies = [ 1476 | "bitflags 2.9.4", 1477 | "jni-sys", 1478 | "log", 1479 | "ndk-sys 0.5.0+25.2.9519653", 1480 | "num_enum 0.7.4", 1481 | "thiserror", 1482 | ] 1483 | 1484 | [[package]] 1485 | name = "ndk-context" 1486 | version = "0.1.1" 1487 | source = "registry+https://github.com/rust-lang/crates.io-index" 1488 | checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 1489 | 1490 | [[package]] 1491 | name = "ndk-sys" 1492 | version = "0.4.1+23.1.7779620" 1493 | source = "registry+https://github.com/rust-lang/crates.io-index" 1494 | checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" 1495 | dependencies = [ 1496 | "jni-sys", 1497 | ] 1498 | 1499 | [[package]] 1500 | name = "ndk-sys" 1501 | version = "0.5.0+25.2.9519653" 1502 | source = "registry+https://github.com/rust-lang/crates.io-index" 1503 | checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" 1504 | dependencies = [ 1505 | "jni-sys", 1506 | ] 1507 | 1508 | [[package]] 1509 | name = "nix" 1510 | version = "0.24.3" 1511 | source = "registry+https://github.com/rust-lang/crates.io-index" 1512 | checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" 1513 | dependencies = [ 1514 | "bitflags 1.3.2", 1515 | "cfg-if", 1516 | "libc", 1517 | "memoffset 0.6.5", 1518 | ] 1519 | 1520 | [[package]] 1521 | name = "nix" 1522 | version = "0.25.1" 1523 | source = "registry+https://github.com/rust-lang/crates.io-index" 1524 | checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" 1525 | dependencies = [ 1526 | "autocfg", 1527 | "bitflags 1.3.2", 1528 | "cfg-if", 1529 | "libc", 1530 | "memoffset 0.6.5", 1531 | ] 1532 | 1533 | [[package]] 1534 | name = "nix" 1535 | version = "0.29.0" 1536 | source = "registry+https://github.com/rust-lang/crates.io-index" 1537 | checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" 1538 | dependencies = [ 1539 | "bitflags 2.9.4", 1540 | "cfg-if", 1541 | "cfg_aliases 0.2.1", 1542 | "libc", 1543 | ] 1544 | 1545 | [[package]] 1546 | name = "nom" 1547 | version = "7.1.3" 1548 | source = "registry+https://github.com/rust-lang/crates.io-index" 1549 | checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 1550 | dependencies = [ 1551 | "memchr", 1552 | "minimal-lexical", 1553 | ] 1554 | 1555 | [[package]] 1556 | name = "num-derive" 1557 | version = "0.4.2" 1558 | source = "registry+https://github.com/rust-lang/crates.io-index" 1559 | checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" 1560 | dependencies = [ 1561 | "proc-macro2", 1562 | "quote", 1563 | "syn 2.0.106", 1564 | ] 1565 | 1566 | [[package]] 1567 | name = "num-traits" 1568 | version = "0.2.19" 1569 | source = "registry+https://github.com/rust-lang/crates.io-index" 1570 | checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 1571 | dependencies = [ 1572 | "autocfg", 1573 | "libm", 1574 | ] 1575 | 1576 | [[package]] 1577 | name = "num_enum" 1578 | version = "0.5.11" 1579 | source = "registry+https://github.com/rust-lang/crates.io-index" 1580 | checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" 1581 | dependencies = [ 1582 | "num_enum_derive 0.5.11", 1583 | ] 1584 | 1585 | [[package]] 1586 | name = "num_enum" 1587 | version = "0.6.1" 1588 | source = "registry+https://github.com/rust-lang/crates.io-index" 1589 | checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" 1590 | dependencies = [ 1591 | "num_enum_derive 0.6.1", 1592 | ] 1593 | 1594 | [[package]] 1595 | name = "num_enum" 1596 | version = "0.7.4" 1597 | source = "registry+https://github.com/rust-lang/crates.io-index" 1598 | checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" 1599 | dependencies = [ 1600 | "num_enum_derive 0.7.4", 1601 | "rustversion", 1602 | ] 1603 | 1604 | [[package]] 1605 | name = "num_enum_derive" 1606 | version = "0.5.11" 1607 | source = "registry+https://github.com/rust-lang/crates.io-index" 1608 | checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" 1609 | dependencies = [ 1610 | "proc-macro-crate 1.3.1", 1611 | "proc-macro2", 1612 | "quote", 1613 | "syn 1.0.109", 1614 | ] 1615 | 1616 | [[package]] 1617 | name = "num_enum_derive" 1618 | version = "0.6.1" 1619 | source = "registry+https://github.com/rust-lang/crates.io-index" 1620 | checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" 1621 | dependencies = [ 1622 | "proc-macro-crate 1.3.1", 1623 | "proc-macro2", 1624 | "quote", 1625 | "syn 2.0.106", 1626 | ] 1627 | 1628 | [[package]] 1629 | name = "num_enum_derive" 1630 | version = "0.7.4" 1631 | source = "registry+https://github.com/rust-lang/crates.io-index" 1632 | checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" 1633 | dependencies = [ 1634 | "proc-macro-crate 3.3.0", 1635 | "proc-macro2", 1636 | "quote", 1637 | "syn 2.0.106", 1638 | ] 1639 | 1640 | [[package]] 1641 | name = "objc" 1642 | version = "0.2.7" 1643 | source = "registry+https://github.com/rust-lang/crates.io-index" 1644 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 1645 | dependencies = [ 1646 | "malloc_buf", 1647 | "objc_exception", 1648 | ] 1649 | 1650 | [[package]] 1651 | name = "objc-sys" 1652 | version = "0.2.0-beta.2" 1653 | source = "registry+https://github.com/rust-lang/crates.io-index" 1654 | checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" 1655 | 1656 | [[package]] 1657 | name = "objc2" 1658 | version = "0.3.0-beta.3.patch-leaks.3" 1659 | source = "registry+https://github.com/rust-lang/crates.io-index" 1660 | checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468" 1661 | dependencies = [ 1662 | "block2", 1663 | "objc-sys", 1664 | "objc2-encode", 1665 | ] 1666 | 1667 | [[package]] 1668 | name = "objc2-encode" 1669 | version = "2.0.0-pre.2" 1670 | source = "registry+https://github.com/rust-lang/crates.io-index" 1671 | checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" 1672 | dependencies = [ 1673 | "objc-sys", 1674 | ] 1675 | 1676 | [[package]] 1677 | name = "objc_exception" 1678 | version = "0.1.2" 1679 | source = "registry+https://github.com/rust-lang/crates.io-index" 1680 | checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" 1681 | dependencies = [ 1682 | "cc", 1683 | ] 1684 | 1685 | [[package]] 1686 | name = "object" 1687 | version = "0.36.7" 1688 | source = "registry+https://github.com/rust-lang/crates.io-index" 1689 | checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" 1690 | dependencies = [ 1691 | "memchr", 1692 | ] 1693 | 1694 | [[package]] 1695 | name = "oboe" 1696 | version = "0.6.1" 1697 | source = "registry+https://github.com/rust-lang/crates.io-index" 1698 | checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb" 1699 | dependencies = [ 1700 | "jni", 1701 | "ndk 0.8.0", 1702 | "ndk-context", 1703 | "num-derive", 1704 | "num-traits", 1705 | "oboe-sys", 1706 | ] 1707 | 1708 | [[package]] 1709 | name = "oboe-sys" 1710 | version = "0.6.1" 1711 | source = "registry+https://github.com/rust-lang/crates.io-index" 1712 | checksum = "6c8bb09a4a2b1d668170cfe0a7d5bc103f8999fb316c98099b6a9939c9f2e79d" 1713 | dependencies = [ 1714 | "cc", 1715 | ] 1716 | 1717 | [[package]] 1718 | name = "ogg" 1719 | version = "0.8.0" 1720 | source = "registry+https://github.com/rust-lang/crates.io-index" 1721 | checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e" 1722 | dependencies = [ 1723 | "byteorder", 1724 | ] 1725 | 1726 | [[package]] 1727 | name = "once_cell" 1728 | version = "1.21.3" 1729 | source = "registry+https://github.com/rust-lang/crates.io-index" 1730 | checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 1731 | 1732 | [[package]] 1733 | name = "option-ext" 1734 | version = "0.2.0" 1735 | source = "registry+https://github.com/rust-lang/crates.io-index" 1736 | checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" 1737 | 1738 | [[package]] 1739 | name = "orbclient" 1740 | version = "0.3.48" 1741 | source = "registry+https://github.com/rust-lang/crates.io-index" 1742 | checksum = "ba0b26cec2e24f08ed8bb31519a9333140a6599b867dac464bb150bdb796fd43" 1743 | dependencies = [ 1744 | "libredox", 1745 | ] 1746 | 1747 | [[package]] 1748 | name = "ordered-float" 1749 | version = "3.9.2" 1750 | source = "registry+https://github.com/rust-lang/crates.io-index" 1751 | checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" 1752 | dependencies = [ 1753 | "num-traits", 1754 | ] 1755 | 1756 | [[package]] 1757 | name = "ordered-float" 1758 | version = "5.0.0" 1759 | source = "registry+https://github.com/rust-lang/crates.io-index" 1760 | checksum = "e2c1f9f56e534ac6a9b8a4600bdf0f530fb393b5f393e7b4d03489c3cf0c3f01" 1761 | dependencies = [ 1762 | "num-traits", 1763 | ] 1764 | 1765 | [[package]] 1766 | name = "owned_ttf_parser" 1767 | version = "0.25.1" 1768 | source = "registry+https://github.com/rust-lang/crates.io-index" 1769 | checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" 1770 | dependencies = [ 1771 | "ttf-parser", 1772 | ] 1773 | 1774 | [[package]] 1775 | name = "parking_lot" 1776 | version = "0.12.4" 1777 | source = "registry+https://github.com/rust-lang/crates.io-index" 1778 | checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" 1779 | dependencies = [ 1780 | "lock_api", 1781 | "parking_lot_core", 1782 | ] 1783 | 1784 | [[package]] 1785 | name = "parking_lot_core" 1786 | version = "0.9.11" 1787 | source = "registry+https://github.com/rust-lang/crates.io-index" 1788 | checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" 1789 | dependencies = [ 1790 | "cfg-if", 1791 | "libc", 1792 | "redox_syscall 0.5.17", 1793 | "smallvec", 1794 | "windows-targets 0.52.6", 1795 | ] 1796 | 1797 | [[package]] 1798 | name = "percent-encoding" 1799 | version = "2.3.2" 1800 | source = "registry+https://github.com/rust-lang/crates.io-index" 1801 | checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" 1802 | 1803 | [[package]] 1804 | name = "pkg-config" 1805 | version = "0.3.32" 1806 | source = "registry+https://github.com/rust-lang/crates.io-index" 1807 | checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" 1808 | 1809 | [[package]] 1810 | name = "png" 1811 | version = "0.17.16" 1812 | source = "registry+https://github.com/rust-lang/crates.io-index" 1813 | checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" 1814 | dependencies = [ 1815 | "bitflags 1.3.2", 1816 | "crc32fast", 1817 | "fdeflate", 1818 | "flate2", 1819 | "miniz_oxide", 1820 | ] 1821 | 1822 | [[package]] 1823 | name = "pollster" 1824 | version = "0.3.0" 1825 | source = "registry+https://github.com/rust-lang/crates.io-index" 1826 | checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" 1827 | 1828 | [[package]] 1829 | name = "ppv-lite86" 1830 | version = "0.2.21" 1831 | source = "registry+https://github.com/rust-lang/crates.io-index" 1832 | checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 1833 | dependencies = [ 1834 | "zerocopy", 1835 | ] 1836 | 1837 | [[package]] 1838 | name = "proc-macro-crate" 1839 | version = "1.3.1" 1840 | source = "registry+https://github.com/rust-lang/crates.io-index" 1841 | checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" 1842 | dependencies = [ 1843 | "once_cell", 1844 | "toml_edit 0.19.15", 1845 | ] 1846 | 1847 | [[package]] 1848 | name = "proc-macro-crate" 1849 | version = "3.3.0" 1850 | source = "registry+https://github.com/rust-lang/crates.io-index" 1851 | checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" 1852 | dependencies = [ 1853 | "toml_edit 0.22.27", 1854 | ] 1855 | 1856 | [[package]] 1857 | name = "proc-macro2" 1858 | version = "1.0.101" 1859 | source = "registry+https://github.com/rust-lang/crates.io-index" 1860 | checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" 1861 | dependencies = [ 1862 | "unicode-ident", 1863 | ] 1864 | 1865 | [[package]] 1866 | name = "profiling" 1867 | version = "1.0.17" 1868 | source = "registry+https://github.com/rust-lang/crates.io-index" 1869 | checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" 1870 | 1871 | [[package]] 1872 | name = "pulldown-cmark" 1873 | version = "0.9.6" 1874 | source = "registry+https://github.com/rust-lang/crates.io-index" 1875 | checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" 1876 | dependencies = [ 1877 | "bitflags 2.9.4", 1878 | "memchr", 1879 | "unicase", 1880 | ] 1881 | 1882 | [[package]] 1883 | name = "quote" 1884 | version = "1.0.40" 1885 | source = "registry+https://github.com/rust-lang/crates.io-index" 1886 | checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" 1887 | dependencies = [ 1888 | "proc-macro2", 1889 | ] 1890 | 1891 | [[package]] 1892 | name = "r-efi" 1893 | version = "5.3.0" 1894 | source = "registry+https://github.com/rust-lang/crates.io-index" 1895 | checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" 1896 | 1897 | [[package]] 1898 | name = "rand" 1899 | version = "0.8.5" 1900 | source = "registry+https://github.com/rust-lang/crates.io-index" 1901 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1902 | dependencies = [ 1903 | "libc", 1904 | "rand_chacha 0.3.1", 1905 | "rand_core 0.6.4", 1906 | ] 1907 | 1908 | [[package]] 1909 | name = "rand" 1910 | version = "0.9.2" 1911 | source = "registry+https://github.com/rust-lang/crates.io-index" 1912 | checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" 1913 | dependencies = [ 1914 | "rand_chacha 0.9.0", 1915 | "rand_core 0.9.3", 1916 | ] 1917 | 1918 | [[package]] 1919 | name = "rand_chacha" 1920 | version = "0.3.1" 1921 | source = "registry+https://github.com/rust-lang/crates.io-index" 1922 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 1923 | dependencies = [ 1924 | "ppv-lite86", 1925 | "rand_core 0.6.4", 1926 | ] 1927 | 1928 | [[package]] 1929 | name = "rand_chacha" 1930 | version = "0.9.0" 1931 | source = "registry+https://github.com/rust-lang/crates.io-index" 1932 | checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" 1933 | dependencies = [ 1934 | "ppv-lite86", 1935 | "rand_core 0.9.3", 1936 | ] 1937 | 1938 | [[package]] 1939 | name = "rand_core" 1940 | version = "0.6.4" 1941 | source = "registry+https://github.com/rust-lang/crates.io-index" 1942 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 1943 | dependencies = [ 1944 | "getrandom 0.2.16", 1945 | ] 1946 | 1947 | [[package]] 1948 | name = "rand_core" 1949 | version = "0.9.3" 1950 | source = "registry+https://github.com/rust-lang/crates.io-index" 1951 | checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" 1952 | dependencies = [ 1953 | "getrandom 0.3.3", 1954 | ] 1955 | 1956 | [[package]] 1957 | name = "range-alloc" 1958 | version = "0.1.4" 1959 | source = "registry+https://github.com/rust-lang/crates.io-index" 1960 | checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" 1961 | 1962 | [[package]] 1963 | name = "raw-window-handle" 1964 | version = "0.5.2" 1965 | source = "registry+https://github.com/rust-lang/crates.io-index" 1966 | checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" 1967 | 1968 | [[package]] 1969 | name = "rayon" 1970 | version = "1.11.0" 1971 | source = "registry+https://github.com/rust-lang/crates.io-index" 1972 | checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" 1973 | dependencies = [ 1974 | "either", 1975 | "rayon-core", 1976 | ] 1977 | 1978 | [[package]] 1979 | name = "rayon-core" 1980 | version = "1.13.0" 1981 | source = "registry+https://github.com/rust-lang/crates.io-index" 1982 | checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" 1983 | dependencies = [ 1984 | "crossbeam-deque", 1985 | "crossbeam-utils", 1986 | ] 1987 | 1988 | [[package]] 1989 | name = "redox_syscall" 1990 | version = "0.3.5" 1991 | source = "registry+https://github.com/rust-lang/crates.io-index" 1992 | checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" 1993 | dependencies = [ 1994 | "bitflags 1.3.2", 1995 | ] 1996 | 1997 | [[package]] 1998 | name = "redox_syscall" 1999 | version = "0.5.17" 2000 | source = "registry+https://github.com/rust-lang/crates.io-index" 2001 | checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" 2002 | dependencies = [ 2003 | "bitflags 2.9.4", 2004 | ] 2005 | 2006 | [[package]] 2007 | name = "redox_users" 2008 | version = "0.4.6" 2009 | source = "registry+https://github.com/rust-lang/crates.io-index" 2010 | checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" 2011 | dependencies = [ 2012 | "getrandom 0.2.16", 2013 | "libredox", 2014 | "thiserror", 2015 | ] 2016 | 2017 | [[package]] 2018 | name = "regex" 2019 | version = "1.11.2" 2020 | source = "registry+https://github.com/rust-lang/crates.io-index" 2021 | checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" 2022 | dependencies = [ 2023 | "aho-corasick", 2024 | "memchr", 2025 | "regex-automata", 2026 | "regex-syntax", 2027 | ] 2028 | 2029 | [[package]] 2030 | name = "regex-automata" 2031 | version = "0.4.10" 2032 | source = "registry+https://github.com/rust-lang/crates.io-index" 2033 | checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" 2034 | dependencies = [ 2035 | "aho-corasick", 2036 | "memchr", 2037 | "regex-syntax", 2038 | ] 2039 | 2040 | [[package]] 2041 | name = "regex-syntax" 2042 | version = "0.8.6" 2043 | source = "registry+https://github.com/rust-lang/crates.io-index" 2044 | checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" 2045 | 2046 | [[package]] 2047 | name = "renderdoc-sys" 2048 | version = "1.1.0" 2049 | source = "registry+https://github.com/rust-lang/crates.io-index" 2050 | checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" 2051 | 2052 | [[package]] 2053 | name = "rodio" 2054 | version = "0.17.3" 2055 | source = "registry+https://github.com/rust-lang/crates.io-index" 2056 | checksum = "3b1bb7b48ee48471f55da122c0044fcc7600cfcc85db88240b89cb832935e611" 2057 | dependencies = [ 2058 | "claxon", 2059 | "cpal", 2060 | "hound", 2061 | "lewton", 2062 | "symphonia", 2063 | ] 2064 | 2065 | [[package]] 2066 | name = "rustc-demangle" 2067 | version = "0.1.26" 2068 | source = "registry+https://github.com/rust-lang/crates.io-index" 2069 | checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" 2070 | 2071 | [[package]] 2072 | name = "rustc-hash" 2073 | version = "1.1.0" 2074 | source = "registry+https://github.com/rust-lang/crates.io-index" 2075 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 2076 | 2077 | [[package]] 2078 | name = "rustc-hash" 2079 | version = "2.1.1" 2080 | source = "registry+https://github.com/rust-lang/crates.io-index" 2081 | checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" 2082 | 2083 | [[package]] 2084 | name = "rustix" 2085 | version = "1.0.8" 2086 | source = "registry+https://github.com/rust-lang/crates.io-index" 2087 | checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" 2088 | dependencies = [ 2089 | "bitflags 2.9.4", 2090 | "errno", 2091 | "libc", 2092 | "linux-raw-sys", 2093 | "windows-sys 0.60.2", 2094 | ] 2095 | 2096 | [[package]] 2097 | name = "rustversion" 2098 | version = "1.0.22" 2099 | source = "registry+https://github.com/rust-lang/crates.io-index" 2100 | checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" 2101 | 2102 | [[package]] 2103 | name = "ryu" 2104 | version = "1.0.20" 2105 | source = "registry+https://github.com/rust-lang/crates.io-index" 2106 | checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" 2107 | 2108 | [[package]] 2109 | name = "same-file" 2110 | version = "1.0.6" 2111 | source = "registry+https://github.com/rust-lang/crates.io-index" 2112 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 2113 | dependencies = [ 2114 | "winapi-util", 2115 | ] 2116 | 2117 | [[package]] 2118 | name = "scoped-tls" 2119 | version = "1.0.1" 2120 | source = "registry+https://github.com/rust-lang/crates.io-index" 2121 | checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 2122 | 2123 | [[package]] 2124 | name = "scopeguard" 2125 | version = "1.2.0" 2126 | source = "registry+https://github.com/rust-lang/crates.io-index" 2127 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 2128 | 2129 | [[package]] 2130 | name = "sctk-adwaita" 2131 | version = "0.5.4" 2132 | source = "registry+https://github.com/rust-lang/crates.io-index" 2133 | checksum = "cda4e97be1fd174ccc2aae81c8b694e803fa99b34e8fd0f057a9d70698e3ed09" 2134 | dependencies = [ 2135 | "ab_glyph", 2136 | "log", 2137 | "memmap2", 2138 | "smithay-client-toolkit", 2139 | "tiny-skia", 2140 | ] 2141 | 2142 | [[package]] 2143 | name = "semver" 2144 | version = "1.0.26" 2145 | source = "registry+https://github.com/rust-lang/crates.io-index" 2146 | checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" 2147 | dependencies = [ 2148 | "serde", 2149 | ] 2150 | 2151 | [[package]] 2152 | name = "serde" 2153 | version = "1.0.219" 2154 | source = "registry+https://github.com/rust-lang/crates.io-index" 2155 | checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" 2156 | dependencies = [ 2157 | "serde_derive", 2158 | ] 2159 | 2160 | [[package]] 2161 | name = "serde_derive" 2162 | version = "1.0.219" 2163 | source = "registry+https://github.com/rust-lang/crates.io-index" 2164 | checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" 2165 | dependencies = [ 2166 | "proc-macro2", 2167 | "quote", 2168 | "syn 2.0.106", 2169 | ] 2170 | 2171 | [[package]] 2172 | name = "serde_json" 2173 | version = "1.0.143" 2174 | source = "registry+https://github.com/rust-lang/crates.io-index" 2175 | checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" 2176 | dependencies = [ 2177 | "itoa", 2178 | "memchr", 2179 | "ryu", 2180 | "serde", 2181 | ] 2182 | 2183 | [[package]] 2184 | name = "shlex" 2185 | version = "1.3.0" 2186 | source = "registry+https://github.com/rust-lang/crates.io-index" 2187 | checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 2188 | 2189 | [[package]] 2190 | name = "simd-adler32" 2191 | version = "0.3.7" 2192 | source = "registry+https://github.com/rust-lang/crates.io-index" 2193 | checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" 2194 | 2195 | [[package]] 2196 | name = "skeptic" 2197 | version = "0.13.7" 2198 | source = "registry+https://github.com/rust-lang/crates.io-index" 2199 | checksum = "16d23b015676c90a0f01c197bfdc786c20342c73a0afdda9025adb0bc42940a8" 2200 | dependencies = [ 2201 | "bytecount", 2202 | "cargo_metadata", 2203 | "error-chain", 2204 | "glob", 2205 | "pulldown-cmark", 2206 | "tempfile", 2207 | "walkdir", 2208 | ] 2209 | 2210 | [[package]] 2211 | name = "slotmap" 2212 | version = "1.0.7" 2213 | source = "registry+https://github.com/rust-lang/crates.io-index" 2214 | checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" 2215 | dependencies = [ 2216 | "version_check", 2217 | ] 2218 | 2219 | [[package]] 2220 | name = "smallvec" 2221 | version = "1.15.1" 2222 | source = "registry+https://github.com/rust-lang/crates.io-index" 2223 | checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 2224 | 2225 | [[package]] 2226 | name = "smart-default" 2227 | version = "0.7.1" 2228 | source = "registry+https://github.com/rust-lang/crates.io-index" 2229 | checksum = "0eb01866308440fc64d6c44d9e86c5cc17adfe33c4d6eed55da9145044d0ffc1" 2230 | dependencies = [ 2231 | "proc-macro2", 2232 | "quote", 2233 | "syn 2.0.106", 2234 | ] 2235 | 2236 | [[package]] 2237 | name = "smithay-client-toolkit" 2238 | version = "0.16.1" 2239 | source = "registry+https://github.com/rust-lang/crates.io-index" 2240 | checksum = "870427e30b8f2cbe64bf43ec4b86e88fe39b0a84b3f15efd9c9c2d020bc86eb9" 2241 | dependencies = [ 2242 | "bitflags 1.3.2", 2243 | "calloop", 2244 | "dlib", 2245 | "lazy_static", 2246 | "log", 2247 | "memmap2", 2248 | "nix 0.24.3", 2249 | "pkg-config", 2250 | "wayland-client", 2251 | "wayland-cursor", 2252 | "wayland-protocols", 2253 | ] 2254 | 2255 | [[package]] 2256 | name = "spirv" 2257 | version = "0.2.0+1.5.4" 2258 | source = "registry+https://github.com/rust-lang/crates.io-index" 2259 | checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" 2260 | dependencies = [ 2261 | "bitflags 1.3.2", 2262 | "num-traits", 2263 | ] 2264 | 2265 | [[package]] 2266 | name = "static_assertions" 2267 | version = "1.1.0" 2268 | source = "registry+https://github.com/rust-lang/crates.io-index" 2269 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 2270 | 2271 | [[package]] 2272 | name = "strict-num" 2273 | version = "0.1.1" 2274 | source = "registry+https://github.com/rust-lang/crates.io-index" 2275 | checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" 2276 | 2277 | [[package]] 2278 | name = "symphonia" 2279 | version = "0.5.4" 2280 | source = "registry+https://github.com/rust-lang/crates.io-index" 2281 | checksum = "815c942ae7ee74737bb00f965fa5b5a2ac2ce7b6c01c0cc169bbeaf7abd5f5a9" 2282 | dependencies = [ 2283 | "lazy_static", 2284 | "symphonia-bundle-mp3", 2285 | "symphonia-core", 2286 | "symphonia-metadata", 2287 | ] 2288 | 2289 | [[package]] 2290 | name = "symphonia-bundle-mp3" 2291 | version = "0.5.4" 2292 | source = "registry+https://github.com/rust-lang/crates.io-index" 2293 | checksum = "c01c2aae70f0f1fb096b6f0ff112a930b1fb3626178fba3ae68b09dce71706d4" 2294 | dependencies = [ 2295 | "lazy_static", 2296 | "log", 2297 | "symphonia-core", 2298 | "symphonia-metadata", 2299 | ] 2300 | 2301 | [[package]] 2302 | name = "symphonia-core" 2303 | version = "0.5.4" 2304 | source = "registry+https://github.com/rust-lang/crates.io-index" 2305 | checksum = "798306779e3dc7d5231bd5691f5a813496dc79d3f56bf82e25789f2094e022c3" 2306 | dependencies = [ 2307 | "arrayvec", 2308 | "bitflags 1.3.2", 2309 | "bytemuck", 2310 | "lazy_static", 2311 | "log", 2312 | ] 2313 | 2314 | [[package]] 2315 | name = "symphonia-metadata" 2316 | version = "0.5.4" 2317 | source = "registry+https://github.com/rust-lang/crates.io-index" 2318 | checksum = "bc622b9841a10089c5b18e99eb904f4341615d5aa55bbf4eedde1be721a4023c" 2319 | dependencies = [ 2320 | "encoding_rs", 2321 | "lazy_static", 2322 | "log", 2323 | "symphonia-core", 2324 | ] 2325 | 2326 | [[package]] 2327 | name = "syn" 2328 | version = "1.0.109" 2329 | source = "registry+https://github.com/rust-lang/crates.io-index" 2330 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 2331 | dependencies = [ 2332 | "proc-macro2", 2333 | "quote", 2334 | "unicode-ident", 2335 | ] 2336 | 2337 | [[package]] 2338 | name = "syn" 2339 | version = "2.0.106" 2340 | source = "registry+https://github.com/rust-lang/crates.io-index" 2341 | checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" 2342 | dependencies = [ 2343 | "proc-macro2", 2344 | "quote", 2345 | "unicode-ident", 2346 | ] 2347 | 2348 | [[package]] 2349 | name = "tempfile" 2350 | version = "3.21.0" 2351 | source = "registry+https://github.com/rust-lang/crates.io-index" 2352 | checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" 2353 | dependencies = [ 2354 | "fastrand", 2355 | "getrandom 0.3.3", 2356 | "once_cell", 2357 | "rustix", 2358 | "windows-sys 0.60.2", 2359 | ] 2360 | 2361 | [[package]] 2362 | name = "termcolor" 2363 | version = "1.4.1" 2364 | source = "registry+https://github.com/rust-lang/crates.io-index" 2365 | checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" 2366 | dependencies = [ 2367 | "winapi-util", 2368 | ] 2369 | 2370 | [[package]] 2371 | name = "thiserror" 2372 | version = "1.0.69" 2373 | source = "registry+https://github.com/rust-lang/crates.io-index" 2374 | checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 2375 | dependencies = [ 2376 | "thiserror-impl", 2377 | ] 2378 | 2379 | [[package]] 2380 | name = "thiserror-impl" 2381 | version = "1.0.69" 2382 | source = "registry+https://github.com/rust-lang/crates.io-index" 2383 | checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 2384 | dependencies = [ 2385 | "proc-macro2", 2386 | "quote", 2387 | "syn 2.0.106", 2388 | ] 2389 | 2390 | [[package]] 2391 | name = "tiff" 2392 | version = "0.9.1" 2393 | source = "registry+https://github.com/rust-lang/crates.io-index" 2394 | checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" 2395 | dependencies = [ 2396 | "flate2", 2397 | "jpeg-decoder", 2398 | "weezl", 2399 | ] 2400 | 2401 | [[package]] 2402 | name = "tiny-skia" 2403 | version = "0.8.4" 2404 | source = "registry+https://github.com/rust-lang/crates.io-index" 2405 | checksum = "df8493a203431061e901613751931f047d1971337153f96d0e5e363d6dbf6a67" 2406 | dependencies = [ 2407 | "arrayref", 2408 | "arrayvec", 2409 | "bytemuck", 2410 | "cfg-if", 2411 | "png", 2412 | "tiny-skia-path", 2413 | ] 2414 | 2415 | [[package]] 2416 | name = "tiny-skia-path" 2417 | version = "0.8.4" 2418 | source = "registry+https://github.com/rust-lang/crates.io-index" 2419 | checksum = "adbfb5d3f3dd57a0e11d12f4f13d4ebbbc1b5c15b7ab0a156d030b21da5f677c" 2420 | dependencies = [ 2421 | "arrayref", 2422 | "bytemuck", 2423 | "strict-num", 2424 | ] 2425 | 2426 | [[package]] 2427 | name = "tinyvec" 2428 | version = "1.10.0" 2429 | source = "registry+https://github.com/rust-lang/crates.io-index" 2430 | checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" 2431 | dependencies = [ 2432 | "tinyvec_macros", 2433 | ] 2434 | 2435 | [[package]] 2436 | name = "tinyvec_macros" 2437 | version = "0.1.1" 2438 | source = "registry+https://github.com/rust-lang/crates.io-index" 2439 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 2440 | 2441 | [[package]] 2442 | name = "toml" 2443 | version = "0.5.11" 2444 | source = "registry+https://github.com/rust-lang/crates.io-index" 2445 | checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" 2446 | dependencies = [ 2447 | "serde", 2448 | ] 2449 | 2450 | [[package]] 2451 | name = "toml_datetime" 2452 | version = "0.6.11" 2453 | source = "registry+https://github.com/rust-lang/crates.io-index" 2454 | checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" 2455 | 2456 | [[package]] 2457 | name = "toml_edit" 2458 | version = "0.19.15" 2459 | source = "registry+https://github.com/rust-lang/crates.io-index" 2460 | checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" 2461 | dependencies = [ 2462 | "indexmap 2.11.0", 2463 | "toml_datetime", 2464 | "winnow 0.5.40", 2465 | ] 2466 | 2467 | [[package]] 2468 | name = "toml_edit" 2469 | version = "0.22.27" 2470 | source = "registry+https://github.com/rust-lang/crates.io-index" 2471 | checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" 2472 | dependencies = [ 2473 | "indexmap 2.11.0", 2474 | "toml_datetime", 2475 | "winnow 0.7.13", 2476 | ] 2477 | 2478 | [[package]] 2479 | name = "ttf-parser" 2480 | version = "0.25.1" 2481 | source = "registry+https://github.com/rust-lang/crates.io-index" 2482 | checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" 2483 | 2484 | [[package]] 2485 | name = "twox-hash" 2486 | version = "2.1.1" 2487 | source = "registry+https://github.com/rust-lang/crates.io-index" 2488 | checksum = "8b907da542cbced5261bd3256de1b3a1bf340a3d37f93425a07362a1d687de56" 2489 | dependencies = [ 2490 | "rand 0.9.2", 2491 | ] 2492 | 2493 | [[package]] 2494 | name = "typed-arena" 2495 | version = "2.0.2" 2496 | source = "registry+https://github.com/rust-lang/crates.io-index" 2497 | checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" 2498 | 2499 | [[package]] 2500 | name = "unicase" 2501 | version = "2.8.1" 2502 | source = "registry+https://github.com/rust-lang/crates.io-index" 2503 | checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" 2504 | 2505 | [[package]] 2506 | name = "unicode-ident" 2507 | version = "1.0.18" 2508 | source = "registry+https://github.com/rust-lang/crates.io-index" 2509 | checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" 2510 | 2511 | [[package]] 2512 | name = "unicode-width" 2513 | version = "0.1.14" 2514 | source = "registry+https://github.com/rust-lang/crates.io-index" 2515 | checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" 2516 | 2517 | [[package]] 2518 | name = "unicode-xid" 2519 | version = "0.2.6" 2520 | source = "registry+https://github.com/rust-lang/crates.io-index" 2521 | checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" 2522 | 2523 | [[package]] 2524 | name = "uuid" 2525 | version = "1.18.1" 2526 | source = "registry+https://github.com/rust-lang/crates.io-index" 2527 | checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" 2528 | dependencies = [ 2529 | "js-sys", 2530 | "wasm-bindgen", 2531 | ] 2532 | 2533 | [[package]] 2534 | name = "vec_map" 2535 | version = "0.8.2" 2536 | source = "registry+https://github.com/rust-lang/crates.io-index" 2537 | checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" 2538 | 2539 | [[package]] 2540 | name = "version_check" 2541 | version = "0.9.5" 2542 | source = "registry+https://github.com/rust-lang/crates.io-index" 2543 | checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 2544 | 2545 | [[package]] 2546 | name = "walkdir" 2547 | version = "2.5.0" 2548 | source = "registry+https://github.com/rust-lang/crates.io-index" 2549 | checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 2550 | dependencies = [ 2551 | "same-file", 2552 | "winapi-util", 2553 | ] 2554 | 2555 | [[package]] 2556 | name = "wasi" 2557 | version = "0.11.1+wasi-snapshot-preview1" 2558 | source = "registry+https://github.com/rust-lang/crates.io-index" 2559 | checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 2560 | 2561 | [[package]] 2562 | name = "wasi" 2563 | version = "0.14.3+wasi-0.2.4" 2564 | source = "registry+https://github.com/rust-lang/crates.io-index" 2565 | checksum = "6a51ae83037bdd272a9e28ce236db8c07016dd0d50c27038b3f407533c030c95" 2566 | dependencies = [ 2567 | "wit-bindgen", 2568 | ] 2569 | 2570 | [[package]] 2571 | name = "wasm-bindgen" 2572 | version = "0.2.100" 2573 | source = "registry+https://github.com/rust-lang/crates.io-index" 2574 | checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" 2575 | dependencies = [ 2576 | "cfg-if", 2577 | "once_cell", 2578 | "rustversion", 2579 | "wasm-bindgen-macro", 2580 | ] 2581 | 2582 | [[package]] 2583 | name = "wasm-bindgen-backend" 2584 | version = "0.2.100" 2585 | source = "registry+https://github.com/rust-lang/crates.io-index" 2586 | checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" 2587 | dependencies = [ 2588 | "bumpalo", 2589 | "log", 2590 | "proc-macro2", 2591 | "quote", 2592 | "syn 2.0.106", 2593 | "wasm-bindgen-shared", 2594 | ] 2595 | 2596 | [[package]] 2597 | name = "wasm-bindgen-futures" 2598 | version = "0.4.45" 2599 | source = "registry+https://github.com/rust-lang/crates.io-index" 2600 | checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" 2601 | dependencies = [ 2602 | "cfg-if", 2603 | "js-sys", 2604 | "wasm-bindgen", 2605 | "web-sys", 2606 | ] 2607 | 2608 | [[package]] 2609 | name = "wasm-bindgen-macro" 2610 | version = "0.2.100" 2611 | source = "registry+https://github.com/rust-lang/crates.io-index" 2612 | checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" 2613 | dependencies = [ 2614 | "quote", 2615 | "wasm-bindgen-macro-support", 2616 | ] 2617 | 2618 | [[package]] 2619 | name = "wasm-bindgen-macro-support" 2620 | version = "0.2.100" 2621 | source = "registry+https://github.com/rust-lang/crates.io-index" 2622 | checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" 2623 | dependencies = [ 2624 | "proc-macro2", 2625 | "quote", 2626 | "syn 2.0.106", 2627 | "wasm-bindgen-backend", 2628 | "wasm-bindgen-shared", 2629 | ] 2630 | 2631 | [[package]] 2632 | name = "wasm-bindgen-shared" 2633 | version = "0.2.100" 2634 | source = "registry+https://github.com/rust-lang/crates.io-index" 2635 | checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" 2636 | dependencies = [ 2637 | "unicode-ident", 2638 | ] 2639 | 2640 | [[package]] 2641 | name = "wayland-client" 2642 | version = "0.29.5" 2643 | source = "registry+https://github.com/rust-lang/crates.io-index" 2644 | checksum = "3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715" 2645 | dependencies = [ 2646 | "bitflags 1.3.2", 2647 | "downcast-rs", 2648 | "libc", 2649 | "nix 0.24.3", 2650 | "scoped-tls", 2651 | "wayland-commons", 2652 | "wayland-scanner", 2653 | "wayland-sys", 2654 | ] 2655 | 2656 | [[package]] 2657 | name = "wayland-commons" 2658 | version = "0.29.5" 2659 | source = "registry+https://github.com/rust-lang/crates.io-index" 2660 | checksum = "8691f134d584a33a6606d9d717b95c4fa20065605f798a3f350d78dced02a902" 2661 | dependencies = [ 2662 | "nix 0.24.3", 2663 | "once_cell", 2664 | "smallvec", 2665 | "wayland-sys", 2666 | ] 2667 | 2668 | [[package]] 2669 | name = "wayland-cursor" 2670 | version = "0.29.5" 2671 | source = "registry+https://github.com/rust-lang/crates.io-index" 2672 | checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" 2673 | dependencies = [ 2674 | "nix 0.24.3", 2675 | "wayland-client", 2676 | "xcursor", 2677 | ] 2678 | 2679 | [[package]] 2680 | name = "wayland-protocols" 2681 | version = "0.29.5" 2682 | source = "registry+https://github.com/rust-lang/crates.io-index" 2683 | checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" 2684 | dependencies = [ 2685 | "bitflags 1.3.2", 2686 | "wayland-client", 2687 | "wayland-commons", 2688 | "wayland-scanner", 2689 | ] 2690 | 2691 | [[package]] 2692 | name = "wayland-scanner" 2693 | version = "0.29.5" 2694 | source = "registry+https://github.com/rust-lang/crates.io-index" 2695 | checksum = "8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53" 2696 | dependencies = [ 2697 | "proc-macro2", 2698 | "quote", 2699 | "xml-rs", 2700 | ] 2701 | 2702 | [[package]] 2703 | name = "wayland-sys" 2704 | version = "0.29.5" 2705 | source = "registry+https://github.com/rust-lang/crates.io-index" 2706 | checksum = "be12ce1a3c39ec7dba25594b97b42cb3195d54953ddb9d3d95a7c3902bc6e9d4" 2707 | dependencies = [ 2708 | "dlib", 2709 | "lazy_static", 2710 | "pkg-config", 2711 | ] 2712 | 2713 | [[package]] 2714 | name = "web-sys" 2715 | version = "0.3.72" 2716 | source = "registry+https://github.com/rust-lang/crates.io-index" 2717 | checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" 2718 | dependencies = [ 2719 | "js-sys", 2720 | "wasm-bindgen", 2721 | ] 2722 | 2723 | [[package]] 2724 | name = "weezl" 2725 | version = "0.1.10" 2726 | source = "registry+https://github.com/rust-lang/crates.io-index" 2727 | checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" 2728 | 2729 | [[package]] 2730 | name = "wgpu" 2731 | version = "0.16.3" 2732 | source = "registry+https://github.com/rust-lang/crates.io-index" 2733 | checksum = "480c965c9306872eb6255fa55e4b4953be55a8b64d57e61d7ff840d3dcc051cd" 2734 | dependencies = [ 2735 | "arrayvec", 2736 | "cfg-if", 2737 | "js-sys", 2738 | "log", 2739 | "naga", 2740 | "parking_lot", 2741 | "profiling", 2742 | "raw-window-handle", 2743 | "smallvec", 2744 | "static_assertions", 2745 | "wasm-bindgen", 2746 | "wasm-bindgen-futures", 2747 | "web-sys", 2748 | "wgpu-core", 2749 | "wgpu-hal", 2750 | "wgpu-types", 2751 | ] 2752 | 2753 | [[package]] 2754 | name = "wgpu-core" 2755 | version = "0.16.1" 2756 | source = "registry+https://github.com/rust-lang/crates.io-index" 2757 | checksum = "8f478237b4bf0d5b70a39898a66fa67ca3a007d79f2520485b8b0c3dfc46f8c2" 2758 | dependencies = [ 2759 | "arrayvec", 2760 | "bit-vec", 2761 | "bitflags 2.9.4", 2762 | "codespan-reporting", 2763 | "log", 2764 | "naga", 2765 | "parking_lot", 2766 | "profiling", 2767 | "raw-window-handle", 2768 | "rustc-hash 1.1.0", 2769 | "smallvec", 2770 | "thiserror", 2771 | "web-sys", 2772 | "wgpu-hal", 2773 | "wgpu-types", 2774 | ] 2775 | 2776 | [[package]] 2777 | name = "wgpu-hal" 2778 | version = "0.16.2" 2779 | source = "registry+https://github.com/rust-lang/crates.io-index" 2780 | checksum = "1ecb3258078e936deee14fd4e0febe1cfe9bbb5ffef165cb60218d2ee5eb4448" 2781 | dependencies = [ 2782 | "android_system_properties", 2783 | "arrayvec", 2784 | "ash", 2785 | "bit-set", 2786 | "bitflags 2.9.4", 2787 | "block", 2788 | "core-graphics-types", 2789 | "d3d12", 2790 | "foreign-types", 2791 | "glow", 2792 | "gpu-alloc", 2793 | "gpu-allocator", 2794 | "gpu-descriptor", 2795 | "hassle-rs", 2796 | "js-sys", 2797 | "khronos-egl", 2798 | "libc", 2799 | "libloading 0.8.8", 2800 | "log", 2801 | "metal", 2802 | "naga", 2803 | "objc", 2804 | "parking_lot", 2805 | "profiling", 2806 | "range-alloc", 2807 | "raw-window-handle", 2808 | "renderdoc-sys", 2809 | "rustc-hash 1.1.0", 2810 | "smallvec", 2811 | "thiserror", 2812 | "wasm-bindgen", 2813 | "web-sys", 2814 | "wgpu-types", 2815 | "winapi", 2816 | ] 2817 | 2818 | [[package]] 2819 | name = "wgpu-types" 2820 | version = "0.16.1" 2821 | source = "registry+https://github.com/rust-lang/crates.io-index" 2822 | checksum = "d0c153280bb108c2979eb5c7391cb18c56642dd3c072e55f52065e13e2a1252a" 2823 | dependencies = [ 2824 | "bitflags 2.9.4", 2825 | "js-sys", 2826 | "web-sys", 2827 | ] 2828 | 2829 | [[package]] 2830 | name = "widestring" 2831 | version = "1.2.0" 2832 | source = "registry+https://github.com/rust-lang/crates.io-index" 2833 | checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d" 2834 | 2835 | [[package]] 2836 | name = "winapi" 2837 | version = "0.3.9" 2838 | source = "registry+https://github.com/rust-lang/crates.io-index" 2839 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 2840 | dependencies = [ 2841 | "winapi-i686-pc-windows-gnu", 2842 | "winapi-x86_64-pc-windows-gnu", 2843 | ] 2844 | 2845 | [[package]] 2846 | name = "winapi-i686-pc-windows-gnu" 2847 | version = "0.4.0" 2848 | source = "registry+https://github.com/rust-lang/crates.io-index" 2849 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 2850 | 2851 | [[package]] 2852 | name = "winapi-util" 2853 | version = "0.1.10" 2854 | source = "registry+https://github.com/rust-lang/crates.io-index" 2855 | checksum = "0978bf7171b3d90bac376700cb56d606feb40f251a475a5d6634613564460b22" 2856 | dependencies = [ 2857 | "windows-sys 0.60.2", 2858 | ] 2859 | 2860 | [[package]] 2861 | name = "winapi-x86_64-pc-windows-gnu" 2862 | version = "0.4.0" 2863 | source = "registry+https://github.com/rust-lang/crates.io-index" 2864 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 2865 | 2866 | [[package]] 2867 | name = "windows" 2868 | version = "0.44.0" 2869 | source = "registry+https://github.com/rust-lang/crates.io-index" 2870 | checksum = "9e745dab35a0c4c77aa3ce42d595e13d2003d6902d6b08c9ef5fc326d08da12b" 2871 | dependencies = [ 2872 | "windows-targets 0.42.2", 2873 | ] 2874 | 2875 | [[package]] 2876 | name = "windows" 2877 | version = "0.54.0" 2878 | source = "registry+https://github.com/rust-lang/crates.io-index" 2879 | checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" 2880 | dependencies = [ 2881 | "windows-core 0.54.0", 2882 | "windows-targets 0.52.6", 2883 | ] 2884 | 2885 | [[package]] 2886 | name = "windows" 2887 | version = "0.58.0" 2888 | source = "registry+https://github.com/rust-lang/crates.io-index" 2889 | checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" 2890 | dependencies = [ 2891 | "windows-core 0.58.0", 2892 | "windows-targets 0.52.6", 2893 | ] 2894 | 2895 | [[package]] 2896 | name = "windows-core" 2897 | version = "0.54.0" 2898 | source = "registry+https://github.com/rust-lang/crates.io-index" 2899 | checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" 2900 | dependencies = [ 2901 | "windows-result 0.1.2", 2902 | "windows-targets 0.52.6", 2903 | ] 2904 | 2905 | [[package]] 2906 | name = "windows-core" 2907 | version = "0.58.0" 2908 | source = "registry+https://github.com/rust-lang/crates.io-index" 2909 | checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" 2910 | dependencies = [ 2911 | "windows-implement", 2912 | "windows-interface", 2913 | "windows-result 0.2.0", 2914 | "windows-strings", 2915 | "windows-targets 0.52.6", 2916 | ] 2917 | 2918 | [[package]] 2919 | name = "windows-implement" 2920 | version = "0.58.0" 2921 | source = "registry+https://github.com/rust-lang/crates.io-index" 2922 | checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" 2923 | dependencies = [ 2924 | "proc-macro2", 2925 | "quote", 2926 | "syn 2.0.106", 2927 | ] 2928 | 2929 | [[package]] 2930 | name = "windows-interface" 2931 | version = "0.58.0" 2932 | source = "registry+https://github.com/rust-lang/crates.io-index" 2933 | checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" 2934 | dependencies = [ 2935 | "proc-macro2", 2936 | "quote", 2937 | "syn 2.0.106", 2938 | ] 2939 | 2940 | [[package]] 2941 | name = "windows-link" 2942 | version = "0.1.3" 2943 | source = "registry+https://github.com/rust-lang/crates.io-index" 2944 | checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" 2945 | 2946 | [[package]] 2947 | name = "windows-result" 2948 | version = "0.1.2" 2949 | source = "registry+https://github.com/rust-lang/crates.io-index" 2950 | checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" 2951 | dependencies = [ 2952 | "windows-targets 0.52.6", 2953 | ] 2954 | 2955 | [[package]] 2956 | name = "windows-result" 2957 | version = "0.2.0" 2958 | source = "registry+https://github.com/rust-lang/crates.io-index" 2959 | checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" 2960 | dependencies = [ 2961 | "windows-targets 0.52.6", 2962 | ] 2963 | 2964 | [[package]] 2965 | name = "windows-strings" 2966 | version = "0.1.0" 2967 | source = "registry+https://github.com/rust-lang/crates.io-index" 2968 | checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" 2969 | dependencies = [ 2970 | "windows-result 0.2.0", 2971 | "windows-targets 0.52.6", 2972 | ] 2973 | 2974 | [[package]] 2975 | name = "windows-sys" 2976 | version = "0.45.0" 2977 | source = "registry+https://github.com/rust-lang/crates.io-index" 2978 | checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 2979 | dependencies = [ 2980 | "windows-targets 0.42.2", 2981 | ] 2982 | 2983 | [[package]] 2984 | name = "windows-sys" 2985 | version = "0.48.0" 2986 | source = "registry+https://github.com/rust-lang/crates.io-index" 2987 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 2988 | dependencies = [ 2989 | "windows-targets 0.48.5", 2990 | ] 2991 | 2992 | [[package]] 2993 | name = "windows-sys" 2994 | version = "0.60.2" 2995 | source = "registry+https://github.com/rust-lang/crates.io-index" 2996 | checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" 2997 | dependencies = [ 2998 | "windows-targets 0.53.3", 2999 | ] 3000 | 3001 | [[package]] 3002 | name = "windows-targets" 3003 | version = "0.42.2" 3004 | source = "registry+https://github.com/rust-lang/crates.io-index" 3005 | checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" 3006 | dependencies = [ 3007 | "windows_aarch64_gnullvm 0.42.2", 3008 | "windows_aarch64_msvc 0.42.2", 3009 | "windows_i686_gnu 0.42.2", 3010 | "windows_i686_msvc 0.42.2", 3011 | "windows_x86_64_gnu 0.42.2", 3012 | "windows_x86_64_gnullvm 0.42.2", 3013 | "windows_x86_64_msvc 0.42.2", 3014 | ] 3015 | 3016 | [[package]] 3017 | name = "windows-targets" 3018 | version = "0.48.5" 3019 | source = "registry+https://github.com/rust-lang/crates.io-index" 3020 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 3021 | dependencies = [ 3022 | "windows_aarch64_gnullvm 0.48.5", 3023 | "windows_aarch64_msvc 0.48.5", 3024 | "windows_i686_gnu 0.48.5", 3025 | "windows_i686_msvc 0.48.5", 3026 | "windows_x86_64_gnu 0.48.5", 3027 | "windows_x86_64_gnullvm 0.48.5", 3028 | "windows_x86_64_msvc 0.48.5", 3029 | ] 3030 | 3031 | [[package]] 3032 | name = "windows-targets" 3033 | version = "0.52.6" 3034 | source = "registry+https://github.com/rust-lang/crates.io-index" 3035 | checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 3036 | dependencies = [ 3037 | "windows_aarch64_gnullvm 0.52.6", 3038 | "windows_aarch64_msvc 0.52.6", 3039 | "windows_i686_gnu 0.52.6", 3040 | "windows_i686_gnullvm 0.52.6", 3041 | "windows_i686_msvc 0.52.6", 3042 | "windows_x86_64_gnu 0.52.6", 3043 | "windows_x86_64_gnullvm 0.52.6", 3044 | "windows_x86_64_msvc 0.52.6", 3045 | ] 3046 | 3047 | [[package]] 3048 | name = "windows-targets" 3049 | version = "0.53.3" 3050 | source = "registry+https://github.com/rust-lang/crates.io-index" 3051 | checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" 3052 | dependencies = [ 3053 | "windows-link", 3054 | "windows_aarch64_gnullvm 0.53.0", 3055 | "windows_aarch64_msvc 0.53.0", 3056 | "windows_i686_gnu 0.53.0", 3057 | "windows_i686_gnullvm 0.53.0", 3058 | "windows_i686_msvc 0.53.0", 3059 | "windows_x86_64_gnu 0.53.0", 3060 | "windows_x86_64_gnullvm 0.53.0", 3061 | "windows_x86_64_msvc 0.53.0", 3062 | ] 3063 | 3064 | [[package]] 3065 | name = "windows_aarch64_gnullvm" 3066 | version = "0.42.2" 3067 | source = "registry+https://github.com/rust-lang/crates.io-index" 3068 | checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 3069 | 3070 | [[package]] 3071 | name = "windows_aarch64_gnullvm" 3072 | version = "0.48.5" 3073 | source = "registry+https://github.com/rust-lang/crates.io-index" 3074 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 3075 | 3076 | [[package]] 3077 | name = "windows_aarch64_gnullvm" 3078 | version = "0.52.6" 3079 | source = "registry+https://github.com/rust-lang/crates.io-index" 3080 | checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 3081 | 3082 | [[package]] 3083 | name = "windows_aarch64_gnullvm" 3084 | version = "0.53.0" 3085 | source = "registry+https://github.com/rust-lang/crates.io-index" 3086 | checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" 3087 | 3088 | [[package]] 3089 | name = "windows_aarch64_msvc" 3090 | version = "0.42.2" 3091 | source = "registry+https://github.com/rust-lang/crates.io-index" 3092 | checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 3093 | 3094 | [[package]] 3095 | name = "windows_aarch64_msvc" 3096 | version = "0.48.5" 3097 | source = "registry+https://github.com/rust-lang/crates.io-index" 3098 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 3099 | 3100 | [[package]] 3101 | name = "windows_aarch64_msvc" 3102 | version = "0.52.6" 3103 | source = "registry+https://github.com/rust-lang/crates.io-index" 3104 | checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 3105 | 3106 | [[package]] 3107 | name = "windows_aarch64_msvc" 3108 | version = "0.53.0" 3109 | source = "registry+https://github.com/rust-lang/crates.io-index" 3110 | checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" 3111 | 3112 | [[package]] 3113 | name = "windows_i686_gnu" 3114 | version = "0.42.2" 3115 | source = "registry+https://github.com/rust-lang/crates.io-index" 3116 | checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 3117 | 3118 | [[package]] 3119 | name = "windows_i686_gnu" 3120 | version = "0.48.5" 3121 | source = "registry+https://github.com/rust-lang/crates.io-index" 3122 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 3123 | 3124 | [[package]] 3125 | name = "windows_i686_gnu" 3126 | version = "0.52.6" 3127 | source = "registry+https://github.com/rust-lang/crates.io-index" 3128 | checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 3129 | 3130 | [[package]] 3131 | name = "windows_i686_gnu" 3132 | version = "0.53.0" 3133 | source = "registry+https://github.com/rust-lang/crates.io-index" 3134 | checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" 3135 | 3136 | [[package]] 3137 | name = "windows_i686_gnullvm" 3138 | version = "0.52.6" 3139 | source = "registry+https://github.com/rust-lang/crates.io-index" 3140 | checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 3141 | 3142 | [[package]] 3143 | name = "windows_i686_gnullvm" 3144 | version = "0.53.0" 3145 | source = "registry+https://github.com/rust-lang/crates.io-index" 3146 | checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" 3147 | 3148 | [[package]] 3149 | name = "windows_i686_msvc" 3150 | version = "0.42.2" 3151 | source = "registry+https://github.com/rust-lang/crates.io-index" 3152 | checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 3153 | 3154 | [[package]] 3155 | name = "windows_i686_msvc" 3156 | version = "0.48.5" 3157 | source = "registry+https://github.com/rust-lang/crates.io-index" 3158 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 3159 | 3160 | [[package]] 3161 | name = "windows_i686_msvc" 3162 | version = "0.52.6" 3163 | source = "registry+https://github.com/rust-lang/crates.io-index" 3164 | checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 3165 | 3166 | [[package]] 3167 | name = "windows_i686_msvc" 3168 | version = "0.53.0" 3169 | source = "registry+https://github.com/rust-lang/crates.io-index" 3170 | checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" 3171 | 3172 | [[package]] 3173 | name = "windows_x86_64_gnu" 3174 | version = "0.42.2" 3175 | source = "registry+https://github.com/rust-lang/crates.io-index" 3176 | checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 3177 | 3178 | [[package]] 3179 | name = "windows_x86_64_gnu" 3180 | version = "0.48.5" 3181 | source = "registry+https://github.com/rust-lang/crates.io-index" 3182 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 3183 | 3184 | [[package]] 3185 | name = "windows_x86_64_gnu" 3186 | version = "0.52.6" 3187 | source = "registry+https://github.com/rust-lang/crates.io-index" 3188 | checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 3189 | 3190 | [[package]] 3191 | name = "windows_x86_64_gnu" 3192 | version = "0.53.0" 3193 | source = "registry+https://github.com/rust-lang/crates.io-index" 3194 | checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" 3195 | 3196 | [[package]] 3197 | name = "windows_x86_64_gnullvm" 3198 | version = "0.42.2" 3199 | source = "registry+https://github.com/rust-lang/crates.io-index" 3200 | checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 3201 | 3202 | [[package]] 3203 | name = "windows_x86_64_gnullvm" 3204 | version = "0.48.5" 3205 | source = "registry+https://github.com/rust-lang/crates.io-index" 3206 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 3207 | 3208 | [[package]] 3209 | name = "windows_x86_64_gnullvm" 3210 | version = "0.52.6" 3211 | source = "registry+https://github.com/rust-lang/crates.io-index" 3212 | checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 3213 | 3214 | [[package]] 3215 | name = "windows_x86_64_gnullvm" 3216 | version = "0.53.0" 3217 | source = "registry+https://github.com/rust-lang/crates.io-index" 3218 | checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" 3219 | 3220 | [[package]] 3221 | name = "windows_x86_64_msvc" 3222 | version = "0.42.2" 3223 | source = "registry+https://github.com/rust-lang/crates.io-index" 3224 | checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 3225 | 3226 | [[package]] 3227 | name = "windows_x86_64_msvc" 3228 | version = "0.48.5" 3229 | source = "registry+https://github.com/rust-lang/crates.io-index" 3230 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 3231 | 3232 | [[package]] 3233 | name = "windows_x86_64_msvc" 3234 | version = "0.52.6" 3235 | source = "registry+https://github.com/rust-lang/crates.io-index" 3236 | checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 3237 | 3238 | [[package]] 3239 | name = "windows_x86_64_msvc" 3240 | version = "0.53.0" 3241 | source = "registry+https://github.com/rust-lang/crates.io-index" 3242 | checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" 3243 | 3244 | [[package]] 3245 | name = "winit" 3246 | version = "0.28.7" 3247 | source = "registry+https://github.com/rust-lang/crates.io-index" 3248 | checksum = "9596d90b45384f5281384ab204224876e8e8bf7d58366d9b795ad99aa9894b94" 3249 | dependencies = [ 3250 | "android-activity", 3251 | "bitflags 1.3.2", 3252 | "cfg_aliases 0.1.1", 3253 | "core-foundation", 3254 | "core-graphics", 3255 | "dispatch", 3256 | "instant", 3257 | "libc", 3258 | "log", 3259 | "mio", 3260 | "ndk 0.7.0", 3261 | "objc2", 3262 | "once_cell", 3263 | "orbclient", 3264 | "percent-encoding", 3265 | "raw-window-handle", 3266 | "redox_syscall 0.3.5", 3267 | "sctk-adwaita", 3268 | "serde", 3269 | "smithay-client-toolkit", 3270 | "wasm-bindgen", 3271 | "wayland-client", 3272 | "wayland-commons", 3273 | "wayland-protocols", 3274 | "wayland-scanner", 3275 | "web-sys", 3276 | "windows-sys 0.45.0", 3277 | "x11-dl", 3278 | ] 3279 | 3280 | [[package]] 3281 | name = "winnow" 3282 | version = "0.5.40" 3283 | source = "registry+https://github.com/rust-lang/crates.io-index" 3284 | checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" 3285 | dependencies = [ 3286 | "memchr", 3287 | ] 3288 | 3289 | [[package]] 3290 | name = "winnow" 3291 | version = "0.7.13" 3292 | source = "registry+https://github.com/rust-lang/crates.io-index" 3293 | checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" 3294 | dependencies = [ 3295 | "memchr", 3296 | ] 3297 | 3298 | [[package]] 3299 | name = "wit-bindgen" 3300 | version = "0.45.0" 3301 | source = "registry+https://github.com/rust-lang/crates.io-index" 3302 | checksum = "052283831dbae3d879dc7f51f3d92703a316ca49f91540417d38591826127814" 3303 | 3304 | [[package]] 3305 | name = "x11-dl" 3306 | version = "2.21.0" 3307 | source = "registry+https://github.com/rust-lang/crates.io-index" 3308 | checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" 3309 | dependencies = [ 3310 | "libc", 3311 | "once_cell", 3312 | "pkg-config", 3313 | ] 3314 | 3315 | [[package]] 3316 | name = "xcursor" 3317 | version = "0.3.10" 3318 | source = "registry+https://github.com/rust-lang/crates.io-index" 3319 | checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" 3320 | 3321 | [[package]] 3322 | name = "xi-unicode" 3323 | version = "0.3.0" 3324 | source = "registry+https://github.com/rust-lang/crates.io-index" 3325 | checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" 3326 | 3327 | [[package]] 3328 | name = "xml-rs" 3329 | version = "0.8.27" 3330 | source = "registry+https://github.com/rust-lang/crates.io-index" 3331 | checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" 3332 | 3333 | [[package]] 3334 | name = "zerocopy" 3335 | version = "0.8.26" 3336 | source = "registry+https://github.com/rust-lang/crates.io-index" 3337 | checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" 3338 | dependencies = [ 3339 | "zerocopy-derive", 3340 | ] 3341 | 3342 | [[package]] 3343 | name = "zerocopy-derive" 3344 | version = "0.8.26" 3345 | source = "registry+https://github.com/rust-lang/crates.io-index" 3346 | checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" 3347 | dependencies = [ 3348 | "proc-macro2", 3349 | "quote", 3350 | "syn 2.0.106", 3351 | ] 3352 | 3353 | [[package]] 3354 | name = "zip" 3355 | version = "0.6.6" 3356 | source = "registry+https://github.com/rust-lang/crates.io-index" 3357 | checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" 3358 | dependencies = [ 3359 | "byteorder", 3360 | "bzip2", 3361 | "crc32fast", 3362 | "crossbeam-utils", 3363 | "flate2", 3364 | "zstd", 3365 | ] 3366 | 3367 | [[package]] 3368 | name = "zstd" 3369 | version = "0.11.2+zstd.1.5.2" 3370 | source = "registry+https://github.com/rust-lang/crates.io-index" 3371 | checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" 3372 | dependencies = [ 3373 | "zstd-safe", 3374 | ] 3375 | 3376 | [[package]] 3377 | name = "zstd-safe" 3378 | version = "5.0.2+zstd.1.5.2" 3379 | source = "registry+https://github.com/rust-lang/crates.io-index" 3380 | checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" 3381 | dependencies = [ 3382 | "libc", 3383 | "zstd-sys", 3384 | ] 3385 | 3386 | [[package]] 3387 | name = "zstd-sys" 3388 | version = "2.0.15+zstd.1.5.7" 3389 | source = "registry+https://github.com/rust-lang/crates.io-index" 3390 | checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" 3391 | dependencies = [ 3392 | "cc", 3393 | "pkg-config", 3394 | ] 3395 | --------------------------------------------------------------------------------