├── Trunk.toml ├── .gitignore ├── assets ├── sudoku.gif ├── favicon.ico ├── icon-256.png ├── icon-1024.png ├── icon_ios_touch_192.png ├── maskable_icon_x512.png ├── sw.js └── manifest.json ├── Cargo.toml ├── index.html ├── README.md ├── src ├── solver.rs └── main.rs └── Cargo.lock /Trunk.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | filehash = false 3 | public_url="./" -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | .DS_STORE 3 | /assets/.DS_STORE 4 | /.vscode 5 | /dist -------------------------------------------------------------------------------- /assets/sudoku.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzid/sudoku-solver/HEAD/assets/sudoku.gif -------------------------------------------------------------------------------- /assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzid/sudoku-solver/HEAD/assets/favicon.ico -------------------------------------------------------------------------------- /assets/icon-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzid/sudoku-solver/HEAD/assets/icon-256.png -------------------------------------------------------------------------------- /assets/icon-1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzid/sudoku-solver/HEAD/assets/icon-1024.png -------------------------------------------------------------------------------- /assets/icon_ios_touch_192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzid/sudoku-solver/HEAD/assets/icon_ios_touch_192.png -------------------------------------------------------------------------------- /assets/maskable_icon_x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzid/sudoku-solver/HEAD/assets/maskable_icon_x512.png -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sudoku-solver" 3 | version = "1.0.0" 4 | authors = ["cameron "] 5 | edition = "2021" 6 | description = "Program to solve sudoku board" 7 | 8 | [dependencies] 9 | eframe = "0.21.0" 10 | catppuccin-egui = "2.0" 11 | 12 | # web: 13 | [target.'cfg(target_arch = "wasm32")'.dependencies] 14 | console_error_panic_hook = "0.1.6" 15 | tracing-wasm = "0.2" 16 | wasm-bindgen-futures = "0.4" 17 | 18 | [profile.release] 19 | opt-level = 2 # fast and small wasm 20 | 21 | # Optimize all dependencies even in debug builds: 22 | [profile.dev.package."*"] 23 | opt-level = 2 -------------------------------------------------------------------------------- /assets/sw.js: -------------------------------------------------------------------------------- 1 | var cacheName = 'sudoku-solver-pwa'; 2 | var filesToCache = [ 3 | './', 4 | './index.html', 5 | './sudoku-solver.js', 6 | './sudoku-solver_bg.wasm', 7 | ]; 8 | 9 | /* Start the service worker and cache all of the app's content */ 10 | self.addEventListener('install', function (e) { 11 | e.waitUntil( 12 | caches.open(cacheName).then(function (cache) { 13 | return cache.addAll(filesToCache); 14 | }) 15 | ); 16 | }); 17 | 18 | /* Serve cached content when offline */ 19 | self.addEventListener('fetch', function (e) { 20 | e.respondWith( 21 | caches.match(e.request).then(function (response) { 22 | return response || fetch(e.request); 23 | }) 24 | ); 25 | }); 26 | -------------------------------------------------------------------------------- /assets/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "egui Template PWA", 3 | "short_name": "egui-template-pwa", 4 | "icons": [ 5 | { 6 | "src": "./icon-256.png", 7 | "sizes": "256x256", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "./maskable_icon_x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png", 14 | "purpose": "any maskable" 15 | }, 16 | { 17 | "src": "./icon-1024.png", 18 | "sizes": "1024x1024", 19 | "type": "image/png" 20 | } 21 | ], 22 | "lang": "en-US", 23 | "id": "/index.html", 24 | "start_url": "./index.html", 25 | "display": "standalone", 26 | "background_color": "white", 27 | "theme_color": "white" 28 | } 29 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | sudoku-solver 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 136 | 137 | 138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # sudoku-solver - [Website](https://projects.cameron.rs/sudoku-solver) 2 | 3 | ![sudoku gif](assets/sudoku.gif) 4 | 5 | This Rust application implements a very memory efficent algorithm to solve sudoku and lets the user know when a unique solution does not exist. 6 | 7 | ## Algorithm 8 | 9 | ### [Source](src/solver.rs) 10 | 11 | I create an enum that holds my result type so I can tell the user what went wrong or if it successfully solved the puzzle. 12 | ```rust 13 | pub enum SolveResult { 14 | Unique, 15 | NotUnique, 16 | Invalid, 17 | } 18 | ``` 19 | I create 3 bitfields that I use to store the numbers that a row, column, or box contains 20 | ```rust 21 | pub fn solve_grid(grid: &mut Vec>) -> SolveResult { 22 | // These are the bit fields that keep track of the numbers placed in each row, column, and box of the grid 23 | let mut row: u128 = 0; 24 | let mut col: u128 = 0; 25 | let mut boxes: u128 = 0; 26 | 27 | for r in 0..9 { 28 | for c in 0..9 { 29 | if !grid[r][c].value.is_empty() { 30 | ``` 31 | `key` is calculated by left-shifting the binary value of 1 by a value between 0 and 8, depending on the digit in the cell 32 | ```rust 33 | let key = 1 << grid[r][c].value.chars().next().unwrap() as usize - '1' as usize; 34 | ``` 35 | 36 | `key` is then used to update the corresponding bit in the bit fields 37 | 38 | **Example:** 39 | 40 | If `key` is `000001000` then we have the 6th bit and we will shift it `r * 9` times and then use the OR bitwise operator to set that bit in `row` 41 | ```rust 42 | row |= key << r * 9; 43 | col |= key << c * 9; 44 | boxes |= key << (r / 3 * 3 + c / 3) * 9; 45 | } 46 | } 47 | } 48 | 49 | let mut count = 0; 50 | let old_grid = grid.clone(); 51 | 52 | // We keep a solved_grid because we make sure that there is not a 2nd solution to the puzzle 53 | // If another solution doesn't exits then we set the grid equal to the solved_grid 54 | let mut solved_grid: Vec> = Vec::new(); 55 | 56 | // Call the solving method recursively 57 | solve(&mut solved_grid, grid, &mut row, &mut col, &mut boxes, 0, &mut count); 58 | 59 | match count.cmp(&1) { 60 | Ordering::Equal => { 61 | *grid = solved_grid; 62 | SolveResult::Unique 63 | }, 64 | Ordering::Greater => { 65 | *grid = old_grid; 66 | SolveResult::NotUnique 67 | } 68 | Ordering::Less => { 69 | *grid = old_grid; 70 | SolveResult::Invalid 71 | } 72 | } 73 | } 74 | 75 | fn solve( 76 | solved_grid: &mut Vec>, 77 | grid: &mut Vec>, 78 | row: &mut u128, 79 | col: &mut u128, 80 | boxes: &mut u128, 81 | i: usize, 82 | count: &mut i32, 83 | ) -> bool { 84 | // If there is multiple solutions then automatically return true 85 | if *count > 1 { 86 | return true; 87 | } 88 | 89 | // If reached the end 90 | if i == 81 { 91 | // We need to save the grid in the case that we do not find another solution to the puzzle 92 | if *count == 0 { 93 | *solved_grid = grid.clone(); 94 | } 95 | 96 | *count += 1; 97 | return false; 98 | } 99 | ``` 100 | Since we have a total sum, `i`, we use it to get the row, column, and later on, the box 101 | ```rust 102 | // Get the index of the row and column 103 | let (r, c) = (i / 9, i % 9); 104 | 105 | // If the cell is not empty then move to the next cell 106 | if !grid[r][c].value.is_empty() { 107 | return solve(solved_grid, grid, row, col, boxes, i + 1, count); 108 | } 109 | 110 | // Box index 111 | let b = (r / 3) * 3 + (c / 3); 112 | ``` 113 | `mask` is a bit mask that represents the numbers that are already present 114 | 115 | We shift to the right to align each bits with the corresponding row, column, and box 116 | ```rust 117 | let mask = (*row >> r * 9) | (*col >> c * 9) | (*boxes >> b * 9); 118 | ``` 119 | 120 | We loop through each possible number 121 | 122 | Using `xmask` we check to make sure that the bit has not been set in the row, column, or box. 123 | 124 | If it equals `0` then we know that we can start trying to solve for that specific cell 125 | ```rust 126 | for x in 0..9 { 127 | let xmask = 1 << x; 128 | if mask & xmask != 0 { 129 | continue; 130 | } 131 | ``` 132 | Using the same concept from setting up `row`, `col`, and `boxes` we update the xth bit so we can begin to test 133 | ```rust 134 | // We update the bit at the current x value using xmask 135 | *row |= xmask << r * 9; 136 | *col |= xmask << c * 9; 137 | *boxes |= xmask << b * 9; 138 | 139 | // Since its 0-8 then we do x+1 140 | grid[r][c].value = std::char::from_digit(x + 1, 10).unwrap().to_string(); 141 | grid[r][c].solved_cell = true; 142 | // Recursively call itself with the next cell to check if the value works 143 | if solve(solved_grid, grid, row, col, boxes, i + 1, count) { 144 | return true; 145 | } 146 | ``` 147 | If the value did not work then we undo the changes we made to the xth bit 148 | ```rust 149 | // If it didnt work then we reset the changes we did to the bit fields 150 | *row ^= xmask << r * 9; 151 | *col ^= xmask << c * 9; 152 | *boxes ^= xmask << b * 9; 153 | 154 | grid[r][c].value = String::new(); 155 | grid[r][c].solved_cell = false; 156 | } 157 | 158 | false 159 | } 160 | ``` 161 | 162 | -------------------------------------------------------------------------------- /src/solver.rs: -------------------------------------------------------------------------------- 1 | use std::cmp::Ordering; 2 | 3 | #[derive(Clone, Default)] 4 | pub struct Square { 5 | pub value: String, 6 | pub show_text: bool, 7 | pub solved_cell: bool, 8 | pub focus: bool, 9 | } 10 | 11 | pub type SGrid = [[Square; 9]; 9]; 12 | 13 | pub fn verify_grid(grid: &SGrid) -> bool { 14 | let mut row: u128 = 0; 15 | let mut col: u128 = 0; 16 | let mut boxes: u128 = 0; 17 | 18 | let mut cells = 0; 19 | for (i, srow) in grid.iter().enumerate() { 20 | for (j, cell) in srow.iter().enumerate() { 21 | if cell.value.is_empty() { 22 | continue; 23 | } 24 | 25 | cells += 1; 26 | 27 | let key = cell.value.chars().next().unwrap() as usize - '1' as usize; 28 | 29 | let key_row = 1 << (i * 9 + key); 30 | let key_col = 1 << (j * 9 + key); 31 | 32 | // i / 3 is integer division 33 | // We get the starting row index of the box (i / 3 * 3) 34 | // Then we get the starting column (j / 3) 35 | let key_boxes = 1 << ((i / 3 * 3 + j / 3) * 9 + key); 36 | 37 | // Check if corresponding bits are already set 38 | if row & key_row | col & key_col | boxes & key_boxes != 0 { 39 | return false; 40 | } 41 | 42 | // Set the corresponding bits 43 | row |= key_row; 44 | col |= key_col; 45 | boxes |= key_boxes; 46 | } 47 | } 48 | 49 | // The smallest amount of Sudoku "hints" is 17 50 | //https://phys.org/news/2012-01-mathematicians-minimum-sudoku-solution-problem.html 51 | cells >= 17 52 | } 53 | 54 | pub enum SolveResult { 55 | Unique, 56 | NotUnique, 57 | Invalid, 58 | } 59 | 60 | pub fn solve_grid(grid: &mut SGrid) -> SolveResult { 61 | // These are the bit fields that keep track of the numbers placed in each row, column, and box of the grid 62 | let mut row: u128 = 0; 63 | let mut col: u128 = 0; 64 | let mut boxes: u128 = 0; 65 | 66 | for (r, srow) in grid.iter().enumerate() { 67 | for (c, cell) in srow.iter().enumerate() { 68 | if !cell.value.is_empty() { 69 | // Calculated by left-shifting 1 by a value between 0 and 8, depending on the digit in the cell 70 | let key = 1 << (cell.value.chars().next().unwrap() as usize - '1' as usize); 71 | 72 | // The key value is then used to update the corresponding bit in the bit fields 73 | row |= key << (r * 9); 74 | col |= key << (c * 9); 75 | boxes |= key << ((r / 3 * 3 + c / 3) * 9); 76 | } 77 | } 78 | } 79 | 80 | let mut count = 0; 81 | let old_grid = grid.clone(); 82 | 83 | // We keep a solved_grid because we make sure that there is not a 2nd solution to the puzzle 84 | // If another solution doesn't exits then we set the grid equal to the solved_grid 85 | let mut solved_grid: SGrid = SGrid::default(); 86 | 87 | // Call the solving method recursively 88 | solve( 89 | &mut solved_grid, 90 | grid, 91 | &mut row, 92 | &mut col, 93 | &mut boxes, 94 | 0, 95 | &mut count, 96 | ); 97 | 98 | match count.cmp(&1) { 99 | Ordering::Equal => { 100 | *grid = solved_grid; 101 | SolveResult::Unique 102 | } 103 | Ordering::Greater => { 104 | *grid = old_grid; 105 | SolveResult::NotUnique 106 | } 107 | Ordering::Less => { 108 | *grid = old_grid; 109 | SolveResult::Invalid 110 | } 111 | } 112 | } 113 | 114 | fn solve( 115 | solved_grid: &mut SGrid, 116 | grid: &mut SGrid, 117 | row: &mut u128, 118 | col: &mut u128, 119 | boxes: &mut u128, 120 | i: usize, 121 | count: &mut i32, 122 | ) -> bool { 123 | // If there is multiple solutions then automatically return true 124 | if *count > 1 { 125 | return true; 126 | } 127 | 128 | // If reached the end 129 | if i == 81 { 130 | // We need to save the grid in the case that we do not find another solution to the puzzle 131 | if *count == 0 { 132 | *solved_grid = grid.clone(); 133 | } 134 | 135 | *count += 1; 136 | return false; 137 | } 138 | 139 | // Get the index of the row and column 140 | let (r, c) = (i / 9, i % 9); 141 | 142 | // If the cell is not empty then move to the next cell 143 | if !grid[r][c].value.is_empty() { 144 | return solve(solved_grid, grid, row, col, boxes, i + 1, count); 145 | } 146 | 147 | // Box index 148 | let b = (r / 3) * 3 + (c / 3); 149 | 150 | // This is a bit mask that represents the numbers that are already present 151 | // We shift to the right to align each bits with the corresponding row, column, and box 152 | let mask = (*row >> (r * 9)) | (*col >> (c * 9)) | (*boxes >> (b * 9)); 153 | 154 | for x in 0..9 { 155 | // Move the bit that 1 has to the xth bit and then check it 156 | // to make sure that the bit has not already been set 157 | let xmask = 1 << x; 158 | if mask & xmask != 0 { 159 | continue; 160 | } 161 | 162 | // We update the bit at the current x value using xmask 163 | *row |= xmask << (r * 9); 164 | *col |= xmask << (c * 9); 165 | *boxes |= xmask << (b * 9); 166 | 167 | // Since its 0-8 then we do x+1 168 | grid[r][c].value = std::char::from_digit(x + 1, 10).unwrap().to_string(); 169 | grid[r][c].solved_cell = true; 170 | // Recursively call itself with the next cell to check if the value works 171 | if solve(solved_grid, grid, row, col, boxes, i + 1, count) { 172 | return true; 173 | } 174 | 175 | // If it didnt work then we reset the changes we did to the bit fields 176 | *row ^= xmask << (r * 9); 177 | *col ^= xmask << (c * 9); 178 | *boxes ^= xmask << (b * 9); 179 | 180 | grid[r][c].value = String::new(); 181 | grid[r][c].solved_cell = false; 182 | } 183 | 184 | false 185 | } 186 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | use eframe::egui::*; 2 | 3 | pub mod solver; 4 | use solver::*; 5 | 6 | #[cfg(not(target_arch = "wasm32"))] 7 | fn main() -> eframe::Result<()> { 8 | let options = eframe::NativeOptions { 9 | initial_window_size: Some(vec2(800.0, 625.0)), 10 | ..Default::default() 11 | }; 12 | 13 | eframe::run_native( 14 | "sudoku solver", 15 | options, 16 | Box::new(|_cc| Box::::default()), 17 | ) 18 | } 19 | 20 | // when compiling to web using trunk. 21 | #[cfg(target_arch = "wasm32")] 22 | fn main() { 23 | // Make sure panics are logged using `console.error`. 24 | console_error_panic_hook::set_once(); 25 | 26 | // Redirect tracing to console.log and friends: 27 | tracing_wasm::set_as_global_default(); 28 | 29 | let web_options = eframe::WebOptions::default(); 30 | 31 | wasm_bindgen_futures::spawn_local(async { 32 | eframe::start_web( 33 | "the_canvas_id", // hardcode it 34 | web_options, 35 | Box::new(|_cc| Box::::default()), 36 | ) 37 | .await 38 | .expect("failed to start eframe"); 39 | }); 40 | } 41 | 42 | 43 | struct MyApp { 44 | theme: catppuccin_egui::Theme, 45 | grid: SGrid, 46 | error_message: String, 47 | } 48 | 49 | impl Default for MyApp { 50 | fn default() -> Self { 51 | Self { 52 | theme: catppuccin_egui::MACCHIATO, 53 | grid: SGrid::default(), 54 | error_message: String::new(), 55 | } 56 | } 57 | } 58 | 59 | trait ThemeName { 60 | fn get_name(&self) -> String; 61 | } 62 | 63 | // This allows me to get a String of the theme easier 64 | impl ThemeName for catppuccin_egui::Theme { 65 | fn get_name(&self) -> String { 66 | String::from(match *self { 67 | catppuccin_egui::FRAPPE => "Frappe", 68 | catppuccin_egui::MACCHIATO => "Macchiato", 69 | catppuccin_egui::MOCHA => "Mocha", 70 | _ => "", 71 | }) 72 | } 73 | } 74 | 75 | impl eframe::App for MyApp { 76 | fn update(&mut self, ctx: &Context, _frame: &mut eframe::Frame) { 77 | // Set the theme for the UI using the catppuccin crate 78 | catppuccin_egui::set_theme(ctx, self.theme.clone()); 79 | 80 | TopBottomPanel::top("Top panel???").show(ctx, |ui| { 81 | ui.label(RichText::new("sudoku solver").size(25.0)); 82 | 83 | ui.add_space(10.0); 84 | 85 | ui.horizontal(|ui| { 86 | ui.label(RichText::new("Theme").size(15.0)); 87 | 88 | // ComboBox for the different themes 89 | ComboBox::from_id_source("Theme") 90 | .selected_text(self.theme.get_name()) 91 | .show_ui(ui, |ui| { 92 | ui.selectable_value( 93 | &mut self.theme, 94 | catppuccin_egui::MACCHIATO, 95 | "Macchiato", 96 | ); 97 | ui.selectable_value(&mut self.theme, catppuccin_egui::FRAPPE, "Frappe"); 98 | ui.selectable_value(&mut self.theme, catppuccin_egui::MOCHA, "Mocha"); 99 | }); 100 | 101 | let solve_response = ui.add_sized([50.0, 20.0], 102 | Button::new(RichText::new("Solve").size(15.0).color(self.theme.mantle)) 103 | .fill(self.theme.text) 104 | .stroke(Stroke::NONE), 105 | ); 106 | 107 | if solve_response.clicked() { 108 | // Verify it is a valid sudoku board 109 | if verify_grid(&self.grid) { 110 | // Set the error message based on the result of `solve_grid` 111 | match solve_grid(&mut self.grid) { 112 | SolveResult::Unique => { 113 | self.error_message = String::new(); 114 | } 115 | SolveResult::Invalid => { 116 | self.error_message = "No valid solutions".to_string(); 117 | } 118 | SolveResult::NotUnique => { 119 | self.error_message = "Solution is not unique".to_string(); 120 | } 121 | } 122 | } else { 123 | self.error_message = "Invalid board!".to_string(); 124 | } 125 | } 126 | 127 | let reset_response = ui.add_sized([50.0, 20.0], 128 | Button::new(RichText::new("Reset").size(15.0).color(self.theme.mantle)) 129 | .fill(self.theme.text) 130 | .stroke(Stroke::NONE), 131 | ); 132 | 133 | // If you just clicked the reset button then it will reset the solved cells 134 | if reset_response.clicked() { 135 | self.error_message = String::new(); 136 | for i in 0..9 { 137 | for j in 0..9 { 138 | if self.grid[i][j].solved_cell { 139 | self.grid[i][j].solved_cell = false; 140 | self.grid[i][j].show_text = false; 141 | self.grid[i][j].value = String::new(); 142 | } 143 | } 144 | } 145 | } 146 | 147 | // If you double clicked the response button then reset everything 148 | if reset_response.double_clicked() { 149 | self.error_message = String::new(); 150 | for i in 0..9 { 151 | for j in 0..9 { 152 | self.grid[i][j].solved_cell = false; 153 | self.grid[i][j].show_text = false; 154 | self.grid[i][j].value = String::new(); 155 | } 156 | } 157 | } 158 | 159 | // Put the error message next to the buttons 160 | if !self.error_message.is_empty() { 161 | ui.label(RichText::new(&self.error_message).color(self.theme.red)); 162 | } 163 | }); 164 | 165 | ui.add_space(5.0); 166 | }); 167 | 168 | CentralPanel::default().show(ctx, |ui| { 169 | let square_size = (ui.available_height() / 9.0) - 10.0; 170 | 171 | // 9 squares of square size and 3 spaces of 2.0 width 172 | let adjust = ((9.0 * square_size) + 9.0) / 2.0; 173 | 174 | // This sets the initial position of the grid 175 | let initial_position = Pos2::new( 176 | // Using some pretty basic logic we just get the center and subtract by adjust 177 | ui.available_width() / 2.0 - adjust, 178 | // Doing the same here but we need to make sure we have the correct starting position 179 | ui.next_widget_position().y + ui.available_height() / 2.0 - adjust, 180 | ); 181 | 182 | // This is going to be our position that we continually update as we move through the grid 183 | let mut pos = initial_position; 184 | 185 | //SGrid 186 | ui.horizontal_wrapped(|ui| { 187 | for i in 0..9 { 188 | for j in 0..9 { 189 | let rect = Rect::from_two_pos(pos, pos + vec2(square_size, square_size)); 190 | let response = ui.allocate_rect(rect, Sense::click()); 191 | 192 | // Show the text box if you click on the square 193 | if response.clicked() { 194 | self.grid[i][j].show_text = true; 195 | } 196 | 197 | ui.painter().rect_filled( 198 | rect, 199 | 0.0, 200 | // Checkerboard style color and alt color for solved cells 201 | if self.grid[i][j].solved_cell { 202 | self.theme.crust 203 | } else if (i + j) % 2 == 0 { 204 | self.theme.surface1 205 | } else { 206 | self.theme.surface2 207 | }, 208 | ); 209 | 210 | if self.grid[i][j].show_text || self.grid[i][j].solved_cell { 211 | ui.allocate_ui_at_rect(rect, |ui| { 212 | // Create TextEdit object 213 | let text_edit = TextEdit::singleline(&mut self.grid[i][j].value) 214 | .vertical_align(Align::Center) 215 | .font(FontId::new(30.0, FontFamily::Proportional)) 216 | .frame(false) 217 | .horizontal_align(Align::Center); 218 | 219 | let text_response = 220 | ui.centered_and_justified(|ui| ui.add(text_edit)).inner; 221 | 222 | if text_response.has_focus() { 223 | // Here we go through and check to see if the user has pressed any of the arrow keys and then change the focus of which cell they are on 224 | if ui.input_mut(|inp| { 225 | inp.consume_key(Modifiers::NONE, Key::ArrowDown) 226 | }) { 227 | text_response.surrender_focus(); 228 | let row_down = (i + 1) % 9; 229 | self.grid[i][j].focus = false; 230 | self.grid[row_down][j].focus = true; 231 | self.grid[row_down][j].show_text = true; 232 | } 233 | 234 | if ui.input_mut(|inp| { 235 | inp.consume_key(Modifiers::NONE, Key::ArrowUp) 236 | }) { 237 | text_response.surrender_focus(); 238 | // Prevent subtract with overflow error 239 | let row_up = (9 + i - 1) % 9; 240 | self.grid[i][j].focus = false; 241 | self.grid[row_up][j].focus = true; 242 | self.grid[row_up][j].show_text = true; 243 | } 244 | 245 | if ui.input_mut(|inp| { 246 | inp.consume_key(Modifiers::NONE, Key::ArrowLeft) 247 | }) { 248 | text_response.surrender_focus(); 249 | // Prevent subtract with overflow error 250 | let col_left = (9 + j - 1) % 9; 251 | self.grid[i][j].focus = false; 252 | self.grid[i][col_left].focus = true; 253 | self.grid[i][col_left].show_text = true; 254 | } 255 | 256 | if ui.input_mut(|inp| { 257 | inp.consume_key(Modifiers::NONE, Key::ArrowRight) 258 | }) { 259 | text_response.surrender_focus(); 260 | let col_right = (j + 1) % 9; 261 | self.grid[i][j].focus = false; 262 | self.grid[i][col_right].focus = true; 263 | self.grid[i][col_right].show_text = true; 264 | } 265 | } 266 | 267 | // Make sure to keep requesting focus until you have it 268 | if text_response.has_focus() && self.grid[i][j].focus { 269 | self.grid[i][j].focus = false; 270 | } 271 | 272 | // If you just clicked on an empty square then immediatly focus to allow typing 273 | // Or if this is the square that the cursor needs to move too 274 | if response.clicked() || self.grid[i][j].focus { 275 | text_response.request_focus(); 276 | } 277 | 278 | // If you do not have focus and the value is empty then do not show anymore 279 | if !text_response.has_focus() 280 | && self.grid[i][j].value.is_empty() 281 | && !self.grid[i][j].focus 282 | { 283 | self.grid[i][j].show_text = false; 284 | } 285 | 286 | // This makes sure that we both limit the length of the input and make sure its a number 1-9 inclusive 287 | if let Some(first_char) = self.grid[i][j].value.chars().next() { 288 | // TODO: Remove `square.value.len() > 1` once https://github.com/emilk/egui/pull/2816 is accepted 289 | if self.grid[i][j].value.len() > 1 { 290 | self.grid[i][j].value = first_char.to_string(); 291 | } else if !first_char.is_ascii_digit() || first_char == '0' { 292 | self.grid[i][j].value.clear(); 293 | } 294 | } 295 | }); 296 | } 297 | 298 | pos.x += square_size; 299 | 300 | // This is for the horizontal spacing for each 3x3 Cube 301 | if (j + 1) % 3 == 0 { 302 | pos.x += 3.0; 303 | } 304 | } 305 | 306 | // Reset the x position to the initial start for a row 307 | pos.x = initial_position.x; 308 | // Increment the y position to a new row 309 | pos.y += square_size; 310 | 311 | // Vertical spacing for 3x3 Cube 312 | if (i + 1) % 3 == 0 { 313 | pos.y += 3.0; 314 | } 315 | } 316 | }); 317 | }); 318 | } 319 | } 320 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "ab_glyph" 7 | version = "0.2.20" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "fe21446ad43aa56417a767f3e2f3d7c4ca522904de1dd640529a76e9c5c3b33c" 10 | dependencies = [ 11 | "ab_glyph_rasterizer", 12 | "owned_ttf_parser", 13 | ] 14 | 15 | [[package]] 16 | name = "ab_glyph_rasterizer" 17 | version = "0.1.8" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" 20 | 21 | [[package]] 22 | name = "accesskit" 23 | version = "0.9.0" 24 | source = "registry+https://github.com/rust-lang/crates.io-index" 25 | checksum = "4803cf8c252f374ae6bfbb341e49e5a37f7601f2ce74a105927a663eba952c67" 26 | 27 | [[package]] 28 | name = "accesskit_consumer" 29 | version = "0.13.0" 30 | source = "registry+https://github.com/rust-lang/crates.io-index" 31 | checksum = "cee8cf1202a4f94d31837f1902ab0a75c77b65bf59719e093703abe83efd74ec" 32 | dependencies = [ 33 | "accesskit", 34 | "parking_lot", 35 | ] 36 | 37 | [[package]] 38 | name = "accesskit_macos" 39 | version = "0.5.0" 40 | source = "registry+https://github.com/rust-lang/crates.io-index" 41 | checksum = "10be25f2b27bc33aa1647072e86b948b41596f1af1ae43a2b4b9be5d2011cbda" 42 | dependencies = [ 43 | "accesskit", 44 | "accesskit_consumer", 45 | "objc2", 46 | "once_cell", 47 | "parking_lot", 48 | ] 49 | 50 | [[package]] 51 | name = "accesskit_unix" 52 | version = "0.2.0" 53 | source = "registry+https://github.com/rust-lang/crates.io-index" 54 | checksum = "630e7ee8f93c6246478bf0df6760db899b28d9ad54353a5f2d3157138ba817fc" 55 | dependencies = [ 56 | "accesskit", 57 | "accesskit_consumer", 58 | "async-channel", 59 | "atspi", 60 | "futures-lite", 61 | "parking_lot", 62 | "serde", 63 | "zbus", 64 | ] 65 | 66 | [[package]] 67 | name = "accesskit_windows" 68 | version = "0.12.0" 69 | source = "registry+https://github.com/rust-lang/crates.io-index" 70 | checksum = "a13c462fabdd950ef14308a9390b07fa2e2e3aabccba1f3ea36ea2231bb942ab" 71 | dependencies = [ 72 | "accesskit", 73 | "accesskit_consumer", 74 | "arrayvec", 75 | "once_cell", 76 | "parking_lot", 77 | "paste", 78 | "windows", 79 | ] 80 | 81 | [[package]] 82 | name = "accesskit_winit" 83 | version = "0.10.0" 84 | source = "registry+https://github.com/rust-lang/crates.io-index" 85 | checksum = "17727888757ec027ec221db33070e226ee07df44425b583bc67684204d35eff9" 86 | dependencies = [ 87 | "accesskit", 88 | "accesskit_macos", 89 | "accesskit_unix", 90 | "accesskit_windows", 91 | "parking_lot", 92 | "winit", 93 | ] 94 | 95 | [[package]] 96 | name = "adler" 97 | version = "1.0.2" 98 | source = "registry+https://github.com/rust-lang/crates.io-index" 99 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 100 | 101 | [[package]] 102 | name = "ahash" 103 | version = "0.8.3" 104 | source = "registry+https://github.com/rust-lang/crates.io-index" 105 | checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" 106 | dependencies = [ 107 | "cfg-if", 108 | "once_cell", 109 | "version_check", 110 | ] 111 | 112 | [[package]] 113 | name = "aho-corasick" 114 | version = "0.7.20" 115 | source = "registry+https://github.com/rust-lang/crates.io-index" 116 | checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" 117 | dependencies = [ 118 | "memchr", 119 | ] 120 | 121 | [[package]] 122 | name = "android-activity" 123 | version = "0.4.1" 124 | source = "registry+https://github.com/rust-lang/crates.io-index" 125 | checksum = "7c77a0045eda8b888c76ea473c2b0515ba6f471d318f8927c5c72240937035a6" 126 | dependencies = [ 127 | "android-properties", 128 | "bitflags", 129 | "cc", 130 | "jni-sys", 131 | "libc", 132 | "log", 133 | "ndk", 134 | "ndk-context", 135 | "ndk-sys", 136 | "num_enum", 137 | ] 138 | 139 | [[package]] 140 | name = "android-properties" 141 | version = "0.2.2" 142 | source = "registry+https://github.com/rust-lang/crates.io-index" 143 | checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" 144 | 145 | [[package]] 146 | name = "arboard" 147 | version = "3.2.0" 148 | source = "registry+https://github.com/rust-lang/crates.io-index" 149 | checksum = "d6041616acea41d67c4a984709ddab1587fd0b10efe5cc563fee954d2f011854" 150 | dependencies = [ 151 | "clipboard-win", 152 | "log", 153 | "objc", 154 | "objc-foundation", 155 | "objc_id", 156 | "once_cell", 157 | "parking_lot", 158 | "thiserror", 159 | "winapi", 160 | "x11rb", 161 | ] 162 | 163 | [[package]] 164 | name = "arrayref" 165 | version = "0.3.7" 166 | source = "registry+https://github.com/rust-lang/crates.io-index" 167 | checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" 168 | 169 | [[package]] 170 | name = "arrayvec" 171 | version = "0.7.2" 172 | source = "registry+https://github.com/rust-lang/crates.io-index" 173 | checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" 174 | 175 | [[package]] 176 | name = "async-broadcast" 177 | version = "0.5.1" 178 | source = "registry+https://github.com/rust-lang/crates.io-index" 179 | checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" 180 | dependencies = [ 181 | "event-listener", 182 | "futures-core", 183 | ] 184 | 185 | [[package]] 186 | name = "async-channel" 187 | version = "1.8.0" 188 | source = "registry+https://github.com/rust-lang/crates.io-index" 189 | checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" 190 | dependencies = [ 191 | "concurrent-queue", 192 | "event-listener", 193 | "futures-core", 194 | ] 195 | 196 | [[package]] 197 | name = "async-executor" 198 | version = "1.5.0" 199 | source = "registry+https://github.com/rust-lang/crates.io-index" 200 | checksum = "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b" 201 | dependencies = [ 202 | "async-lock", 203 | "async-task", 204 | "concurrent-queue", 205 | "fastrand", 206 | "futures-lite", 207 | "slab", 208 | ] 209 | 210 | [[package]] 211 | name = "async-fs" 212 | version = "1.6.0" 213 | source = "registry+https://github.com/rust-lang/crates.io-index" 214 | checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" 215 | dependencies = [ 216 | "async-lock", 217 | "autocfg", 218 | "blocking", 219 | "futures-lite", 220 | ] 221 | 222 | [[package]] 223 | name = "async-io" 224 | version = "1.12.0" 225 | source = "registry+https://github.com/rust-lang/crates.io-index" 226 | checksum = "8c374dda1ed3e7d8f0d9ba58715f924862c63eae6849c92d3a18e7fbde9e2794" 227 | dependencies = [ 228 | "async-lock", 229 | "autocfg", 230 | "concurrent-queue", 231 | "futures-lite", 232 | "libc", 233 | "log", 234 | "parking", 235 | "polling", 236 | "slab", 237 | "socket2", 238 | "waker-fn", 239 | "windows-sys 0.42.0", 240 | ] 241 | 242 | [[package]] 243 | name = "async-lock" 244 | version = "2.7.0" 245 | source = "registry+https://github.com/rust-lang/crates.io-index" 246 | checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" 247 | dependencies = [ 248 | "event-listener", 249 | ] 250 | 251 | [[package]] 252 | name = "async-recursion" 253 | version = "1.0.4" 254 | source = "registry+https://github.com/rust-lang/crates.io-index" 255 | checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" 256 | dependencies = [ 257 | "proc-macro2", 258 | "quote", 259 | "syn 2.0.4", 260 | ] 261 | 262 | [[package]] 263 | name = "async-task" 264 | version = "4.3.0" 265 | source = "registry+https://github.com/rust-lang/crates.io-index" 266 | checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" 267 | 268 | [[package]] 269 | name = "async-trait" 270 | version = "0.1.67" 271 | source = "registry+https://github.com/rust-lang/crates.io-index" 272 | checksum = "86ea188f25f0255d8f92797797c97ebf5631fa88178beb1a46fdf5622c9a00e4" 273 | dependencies = [ 274 | "proc-macro2", 275 | "quote", 276 | "syn 2.0.4", 277 | ] 278 | 279 | [[package]] 280 | name = "atomic-waker" 281 | version = "1.1.0" 282 | source = "registry+https://github.com/rust-lang/crates.io-index" 283 | checksum = "debc29dde2e69f9e47506b525f639ed42300fc014a3e007832592448fa8e4599" 284 | 285 | [[package]] 286 | name = "atomic_refcell" 287 | version = "0.1.9" 288 | source = "registry+https://github.com/rust-lang/crates.io-index" 289 | checksum = "857253367827bd9d0fd973f0ef15506a96e79e41b0ad7aa691203a4e3214f6c8" 290 | 291 | [[package]] 292 | name = "atspi" 293 | version = "0.8.7" 294 | source = "registry+https://github.com/rust-lang/crates.io-index" 295 | checksum = "ab84c09a770065868da0d713f1f4b35af85d96530a868f1c1a6c249178379187" 296 | dependencies = [ 297 | "async-recursion", 298 | "async-trait", 299 | "atspi-macros", 300 | "enumflags2", 301 | "futures-lite", 302 | "serde", 303 | "tracing", 304 | "zbus", 305 | "zbus_names", 306 | ] 307 | 308 | [[package]] 309 | name = "atspi-macros" 310 | version = "0.1.4" 311 | source = "registry+https://github.com/rust-lang/crates.io-index" 312 | checksum = "b3ebc5a6f61f6996eca56a4cece7b3fe7da3b86f0473c7b71ab44e229f3acce4" 313 | dependencies = [ 314 | "proc-macro2", 315 | "quote", 316 | "serde", 317 | "syn 1.0.109", 318 | "zbus", 319 | "zbus_names", 320 | "zvariant", 321 | ] 322 | 323 | [[package]] 324 | name = "autocfg" 325 | version = "1.1.0" 326 | source = "registry+https://github.com/rust-lang/crates.io-index" 327 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 328 | 329 | [[package]] 330 | name = "bitflags" 331 | version = "1.3.2" 332 | source = "registry+https://github.com/rust-lang/crates.io-index" 333 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 334 | 335 | [[package]] 336 | name = "block" 337 | version = "0.1.6" 338 | source = "registry+https://github.com/rust-lang/crates.io-index" 339 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 340 | 341 | [[package]] 342 | name = "block-buffer" 343 | version = "0.10.4" 344 | source = "registry+https://github.com/rust-lang/crates.io-index" 345 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 346 | dependencies = [ 347 | "generic-array", 348 | ] 349 | 350 | [[package]] 351 | name = "block-sys" 352 | version = "0.1.0-beta.1" 353 | source = "registry+https://github.com/rust-lang/crates.io-index" 354 | checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" 355 | dependencies = [ 356 | "objc-sys", 357 | ] 358 | 359 | [[package]] 360 | name = "block2" 361 | version = "0.2.0-alpha.6" 362 | source = "registry+https://github.com/rust-lang/crates.io-index" 363 | checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" 364 | dependencies = [ 365 | "block-sys", 366 | "objc2-encode", 367 | ] 368 | 369 | [[package]] 370 | name = "blocking" 371 | version = "1.3.0" 372 | source = "registry+https://github.com/rust-lang/crates.io-index" 373 | checksum = "3c67b173a56acffd6d2326fb7ab938ba0b00a71480e14902b2591c87bc5741e8" 374 | dependencies = [ 375 | "async-channel", 376 | "async-lock", 377 | "async-task", 378 | "atomic-waker", 379 | "fastrand", 380 | "futures-lite", 381 | ] 382 | 383 | [[package]] 384 | name = "bumpalo" 385 | version = "3.12.0" 386 | source = "registry+https://github.com/rust-lang/crates.io-index" 387 | checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" 388 | 389 | [[package]] 390 | name = "bytemuck" 391 | version = "1.13.1" 392 | source = "registry+https://github.com/rust-lang/crates.io-index" 393 | checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" 394 | dependencies = [ 395 | "bytemuck_derive", 396 | ] 397 | 398 | [[package]] 399 | name = "bytemuck_derive" 400 | version = "1.4.0" 401 | source = "registry+https://github.com/rust-lang/crates.io-index" 402 | checksum = "1aca418a974d83d40a0c1f0c5cba6ff4bc28d8df099109ca459a2118d40b6322" 403 | dependencies = [ 404 | "proc-macro2", 405 | "quote", 406 | "syn 1.0.109", 407 | ] 408 | 409 | [[package]] 410 | name = "byteorder" 411 | version = "1.4.3" 412 | source = "registry+https://github.com/rust-lang/crates.io-index" 413 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 414 | 415 | [[package]] 416 | name = "bytes" 417 | version = "1.4.0" 418 | source = "registry+https://github.com/rust-lang/crates.io-index" 419 | checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" 420 | 421 | [[package]] 422 | name = "calloop" 423 | version = "0.10.5" 424 | source = "registry+https://github.com/rust-lang/crates.io-index" 425 | checksum = "1a59225be45a478d772ce015d9743e49e92798ece9e34eda9a6aa2a6a7f40192" 426 | dependencies = [ 427 | "log", 428 | "nix 0.25.1", 429 | "slotmap", 430 | "thiserror", 431 | "vec_map", 432 | ] 433 | 434 | [[package]] 435 | name = "catppuccin-egui" 436 | version = "2.0.0" 437 | source = "registry+https://github.com/rust-lang/crates.io-index" 438 | checksum = "e508ad60790f1336e5ab24da9b809826e7ea9171281cc70e894f514f37791317" 439 | dependencies = [ 440 | "egui", 441 | ] 442 | 443 | [[package]] 444 | name = "cc" 445 | version = "1.0.79" 446 | source = "registry+https://github.com/rust-lang/crates.io-index" 447 | checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" 448 | dependencies = [ 449 | "jobserver", 450 | ] 451 | 452 | [[package]] 453 | name = "cesu8" 454 | version = "1.1.0" 455 | source = "registry+https://github.com/rust-lang/crates.io-index" 456 | checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 457 | 458 | [[package]] 459 | name = "cfg-if" 460 | version = "1.0.0" 461 | source = "registry+https://github.com/rust-lang/crates.io-index" 462 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 463 | 464 | [[package]] 465 | name = "cfg_aliases" 466 | version = "0.1.1" 467 | source = "registry+https://github.com/rust-lang/crates.io-index" 468 | checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" 469 | 470 | [[package]] 471 | name = "cgl" 472 | version = "0.3.2" 473 | source = "registry+https://github.com/rust-lang/crates.io-index" 474 | checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" 475 | dependencies = [ 476 | "libc", 477 | ] 478 | 479 | [[package]] 480 | name = "clipboard-win" 481 | version = "4.5.0" 482 | source = "registry+https://github.com/rust-lang/crates.io-index" 483 | checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362" 484 | dependencies = [ 485 | "error-code", 486 | "str-buf", 487 | "winapi", 488 | ] 489 | 490 | [[package]] 491 | name = "combine" 492 | version = "4.6.6" 493 | source = "registry+https://github.com/rust-lang/crates.io-index" 494 | checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" 495 | dependencies = [ 496 | "bytes", 497 | "memchr", 498 | ] 499 | 500 | [[package]] 501 | name = "concurrent-queue" 502 | version = "2.1.0" 503 | source = "registry+https://github.com/rust-lang/crates.io-index" 504 | checksum = "c278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8e" 505 | dependencies = [ 506 | "crossbeam-utils", 507 | ] 508 | 509 | [[package]] 510 | name = "console_error_panic_hook" 511 | version = "0.1.7" 512 | source = "registry+https://github.com/rust-lang/crates.io-index" 513 | checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" 514 | dependencies = [ 515 | "cfg-if", 516 | "wasm-bindgen", 517 | ] 518 | 519 | [[package]] 520 | name = "core-foundation" 521 | version = "0.9.3" 522 | source = "registry+https://github.com/rust-lang/crates.io-index" 523 | checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" 524 | dependencies = [ 525 | "core-foundation-sys", 526 | "libc", 527 | ] 528 | 529 | [[package]] 530 | name = "core-foundation-sys" 531 | version = "0.8.3" 532 | source = "registry+https://github.com/rust-lang/crates.io-index" 533 | checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" 534 | 535 | [[package]] 536 | name = "core-graphics" 537 | version = "0.22.3" 538 | source = "registry+https://github.com/rust-lang/crates.io-index" 539 | checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" 540 | dependencies = [ 541 | "bitflags", 542 | "core-foundation", 543 | "core-graphics-types", 544 | "foreign-types", 545 | "libc", 546 | ] 547 | 548 | [[package]] 549 | name = "core-graphics-types" 550 | version = "0.1.1" 551 | source = "registry+https://github.com/rust-lang/crates.io-index" 552 | checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" 553 | dependencies = [ 554 | "bitflags", 555 | "core-foundation", 556 | "foreign-types", 557 | "libc", 558 | ] 559 | 560 | [[package]] 561 | name = "cpufeatures" 562 | version = "0.2.5" 563 | source = "registry+https://github.com/rust-lang/crates.io-index" 564 | checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" 565 | dependencies = [ 566 | "libc", 567 | ] 568 | 569 | [[package]] 570 | name = "crc32fast" 571 | version = "1.3.2" 572 | source = "registry+https://github.com/rust-lang/crates.io-index" 573 | checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" 574 | dependencies = [ 575 | "cfg-if", 576 | ] 577 | 578 | [[package]] 579 | name = "crossbeam-utils" 580 | version = "0.8.15" 581 | source = "registry+https://github.com/rust-lang/crates.io-index" 582 | checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" 583 | dependencies = [ 584 | "cfg-if", 585 | ] 586 | 587 | [[package]] 588 | name = "crypto-common" 589 | version = "0.1.6" 590 | source = "registry+https://github.com/rust-lang/crates.io-index" 591 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 592 | dependencies = [ 593 | "generic-array", 594 | "typenum", 595 | ] 596 | 597 | [[package]] 598 | name = "derivative" 599 | version = "2.2.0" 600 | source = "registry+https://github.com/rust-lang/crates.io-index" 601 | checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" 602 | dependencies = [ 603 | "proc-macro2", 604 | "quote", 605 | "syn 1.0.109", 606 | ] 607 | 608 | [[package]] 609 | name = "digest" 610 | version = "0.10.6" 611 | source = "registry+https://github.com/rust-lang/crates.io-index" 612 | checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" 613 | dependencies = [ 614 | "block-buffer", 615 | "crypto-common", 616 | ] 617 | 618 | [[package]] 619 | name = "dirs" 620 | version = "4.0.0" 621 | source = "registry+https://github.com/rust-lang/crates.io-index" 622 | checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" 623 | dependencies = [ 624 | "dirs-sys", 625 | ] 626 | 627 | [[package]] 628 | name = "dirs-sys" 629 | version = "0.3.7" 630 | source = "registry+https://github.com/rust-lang/crates.io-index" 631 | checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" 632 | dependencies = [ 633 | "libc", 634 | "redox_users", 635 | "winapi", 636 | ] 637 | 638 | [[package]] 639 | name = "dispatch" 640 | version = "0.2.0" 641 | source = "registry+https://github.com/rust-lang/crates.io-index" 642 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 643 | 644 | [[package]] 645 | name = "dlib" 646 | version = "0.5.0" 647 | source = "registry+https://github.com/rust-lang/crates.io-index" 648 | checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794" 649 | dependencies = [ 650 | "libloading", 651 | ] 652 | 653 | [[package]] 654 | name = "downcast-rs" 655 | version = "1.2.0" 656 | source = "registry+https://github.com/rust-lang/crates.io-index" 657 | checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" 658 | 659 | [[package]] 660 | name = "ecolor" 661 | version = "0.21.0" 662 | source = "registry+https://github.com/rust-lang/crates.io-index" 663 | checksum = "1f99fe3cac305af9d6d92971af60d0f7ea4d783201ef1673571567b6699964d9" 664 | dependencies = [ 665 | "bytemuck", 666 | ] 667 | 668 | [[package]] 669 | name = "eframe" 670 | version = "0.21.3" 671 | source = "registry+https://github.com/rust-lang/crates.io-index" 672 | checksum = "3df3ce60931e5f2d83bab4484d1a283908534d5308cc6b0c5c22c59cd15ee7cc" 673 | dependencies = [ 674 | "bytemuck", 675 | "egui", 676 | "egui-winit", 677 | "egui_glow", 678 | "glow", 679 | "glutin", 680 | "glutin-winit", 681 | "js-sys", 682 | "percent-encoding", 683 | "raw-window-handle", 684 | "thiserror", 685 | "tracing", 686 | "wasm-bindgen", 687 | "wasm-bindgen-futures", 688 | "web-sys", 689 | "winit", 690 | ] 691 | 692 | [[package]] 693 | name = "egui" 694 | version = "0.21.0" 695 | source = "registry+https://github.com/rust-lang/crates.io-index" 696 | checksum = "6412a21e0bde7c0918f7fb44bbbb86b5e1f88e63c026a4e747cc7af02f76dfbe" 697 | dependencies = [ 698 | "accesskit", 699 | "ahash", 700 | "epaint", 701 | "nohash-hasher", 702 | "tracing", 703 | ] 704 | 705 | [[package]] 706 | name = "egui-winit" 707 | version = "0.21.1" 708 | source = "registry+https://github.com/rust-lang/crates.io-index" 709 | checksum = "ab43597ba41f0ce39a364ad83185594578bfd8b3409b99dbcbb01df23afc3dbb" 710 | dependencies = [ 711 | "accesskit_winit", 712 | "android-activity", 713 | "arboard", 714 | "egui", 715 | "instant", 716 | "smithay-clipboard", 717 | "tracing", 718 | "webbrowser", 719 | "winit", 720 | ] 721 | 722 | [[package]] 723 | name = "egui_glow" 724 | version = "0.21.0" 725 | source = "registry+https://github.com/rust-lang/crates.io-index" 726 | checksum = "8257332fb168a965b3dca81d6a344e053153773c889cabdba0b3b76f1629ae81" 727 | dependencies = [ 728 | "bytemuck", 729 | "egui", 730 | "glow", 731 | "memoffset 0.6.5", 732 | "tracing", 733 | "wasm-bindgen", 734 | "web-sys", 735 | ] 736 | 737 | [[package]] 738 | name = "emath" 739 | version = "0.21.0" 740 | source = "registry+https://github.com/rust-lang/crates.io-index" 741 | checksum = "b8ecd80612937e0267909d5351770fe150004e24dab93954f69ca62eecd3f77e" 742 | dependencies = [ 743 | "bytemuck", 744 | ] 745 | 746 | [[package]] 747 | name = "enumflags2" 748 | version = "0.7.5" 749 | source = "registry+https://github.com/rust-lang/crates.io-index" 750 | checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb" 751 | dependencies = [ 752 | "enumflags2_derive", 753 | "serde", 754 | ] 755 | 756 | [[package]] 757 | name = "enumflags2_derive" 758 | version = "0.7.4" 759 | source = "registry+https://github.com/rust-lang/crates.io-index" 760 | checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae" 761 | dependencies = [ 762 | "proc-macro2", 763 | "quote", 764 | "syn 1.0.109", 765 | ] 766 | 767 | [[package]] 768 | name = "epaint" 769 | version = "0.21.0" 770 | source = "registry+https://github.com/rust-lang/crates.io-index" 771 | checksum = "12e78b5c58a1f7f621f9d546add2adce20636422c9b251e29f749e8a2f713c95" 772 | dependencies = [ 773 | "ab_glyph", 774 | "ahash", 775 | "atomic_refcell", 776 | "bytemuck", 777 | "ecolor", 778 | "emath", 779 | "nohash-hasher", 780 | "parking_lot", 781 | ] 782 | 783 | [[package]] 784 | name = "errno" 785 | version = "0.2.8" 786 | source = "registry+https://github.com/rust-lang/crates.io-index" 787 | checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" 788 | dependencies = [ 789 | "errno-dragonfly", 790 | "libc", 791 | "winapi", 792 | ] 793 | 794 | [[package]] 795 | name = "errno-dragonfly" 796 | version = "0.1.2" 797 | source = "registry+https://github.com/rust-lang/crates.io-index" 798 | checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" 799 | dependencies = [ 800 | "cc", 801 | "libc", 802 | ] 803 | 804 | [[package]] 805 | name = "error-code" 806 | version = "2.3.1" 807 | source = "registry+https://github.com/rust-lang/crates.io-index" 808 | checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21" 809 | dependencies = [ 810 | "libc", 811 | "str-buf", 812 | ] 813 | 814 | [[package]] 815 | name = "event-listener" 816 | version = "2.5.3" 817 | source = "registry+https://github.com/rust-lang/crates.io-index" 818 | checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" 819 | 820 | [[package]] 821 | name = "fastrand" 822 | version = "1.9.0" 823 | source = "registry+https://github.com/rust-lang/crates.io-index" 824 | checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" 825 | dependencies = [ 826 | "instant", 827 | ] 828 | 829 | [[package]] 830 | name = "flate2" 831 | version = "1.0.25" 832 | source = "registry+https://github.com/rust-lang/crates.io-index" 833 | checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" 834 | dependencies = [ 835 | "crc32fast", 836 | "miniz_oxide", 837 | ] 838 | 839 | [[package]] 840 | name = "foreign-types" 841 | version = "0.3.2" 842 | source = "registry+https://github.com/rust-lang/crates.io-index" 843 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 844 | dependencies = [ 845 | "foreign-types-shared", 846 | ] 847 | 848 | [[package]] 849 | name = "foreign-types-shared" 850 | version = "0.1.1" 851 | source = "registry+https://github.com/rust-lang/crates.io-index" 852 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 853 | 854 | [[package]] 855 | name = "form_urlencoded" 856 | version = "1.1.0" 857 | source = "registry+https://github.com/rust-lang/crates.io-index" 858 | checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" 859 | dependencies = [ 860 | "percent-encoding", 861 | ] 862 | 863 | [[package]] 864 | name = "futures-core" 865 | version = "0.3.27" 866 | source = "registry+https://github.com/rust-lang/crates.io-index" 867 | checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd" 868 | 869 | [[package]] 870 | name = "futures-io" 871 | version = "0.3.27" 872 | source = "registry+https://github.com/rust-lang/crates.io-index" 873 | checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91" 874 | 875 | [[package]] 876 | name = "futures-lite" 877 | version = "1.12.0" 878 | source = "registry+https://github.com/rust-lang/crates.io-index" 879 | checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" 880 | dependencies = [ 881 | "fastrand", 882 | "futures-core", 883 | "futures-io", 884 | "memchr", 885 | "parking", 886 | "pin-project-lite", 887 | "waker-fn", 888 | ] 889 | 890 | [[package]] 891 | name = "futures-sink" 892 | version = "0.3.27" 893 | source = "registry+https://github.com/rust-lang/crates.io-index" 894 | checksum = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2" 895 | 896 | [[package]] 897 | name = "futures-task" 898 | version = "0.3.27" 899 | source = "registry+https://github.com/rust-lang/crates.io-index" 900 | checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879" 901 | 902 | [[package]] 903 | name = "futures-util" 904 | version = "0.3.27" 905 | source = "registry+https://github.com/rust-lang/crates.io-index" 906 | checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab" 907 | dependencies = [ 908 | "futures-core", 909 | "futures-io", 910 | "futures-sink", 911 | "futures-task", 912 | "memchr", 913 | "pin-project-lite", 914 | "pin-utils", 915 | "slab", 916 | ] 917 | 918 | [[package]] 919 | name = "generic-array" 920 | version = "0.14.6" 921 | source = "registry+https://github.com/rust-lang/crates.io-index" 922 | checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" 923 | dependencies = [ 924 | "typenum", 925 | "version_check", 926 | ] 927 | 928 | [[package]] 929 | name = "gethostname" 930 | version = "0.2.3" 931 | source = "registry+https://github.com/rust-lang/crates.io-index" 932 | checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" 933 | dependencies = [ 934 | "libc", 935 | "winapi", 936 | ] 937 | 938 | [[package]] 939 | name = "getrandom" 940 | version = "0.2.8" 941 | source = "registry+https://github.com/rust-lang/crates.io-index" 942 | checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" 943 | dependencies = [ 944 | "cfg-if", 945 | "libc", 946 | "wasi", 947 | ] 948 | 949 | [[package]] 950 | name = "gl_generator" 951 | version = "0.14.0" 952 | source = "registry+https://github.com/rust-lang/crates.io-index" 953 | checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" 954 | dependencies = [ 955 | "khronos_api", 956 | "log", 957 | "xml-rs", 958 | ] 959 | 960 | [[package]] 961 | name = "glow" 962 | version = "0.12.1" 963 | source = "registry+https://github.com/rust-lang/crates.io-index" 964 | checksum = "4e007a07a24de5ecae94160f141029e9a347282cfe25d1d58d85d845cf3130f1" 965 | dependencies = [ 966 | "js-sys", 967 | "slotmap", 968 | "wasm-bindgen", 969 | "web-sys", 970 | ] 971 | 972 | [[package]] 973 | name = "glutin" 974 | version = "0.30.7" 975 | source = "registry+https://github.com/rust-lang/crates.io-index" 976 | checksum = "f89bab9ec7715de13d5d5402238e66f48e3a5ae636ebb45aba4013c962e2ff15" 977 | dependencies = [ 978 | "bitflags", 979 | "cfg_aliases", 980 | "cgl", 981 | "core-foundation", 982 | "dispatch", 983 | "glutin_egl_sys", 984 | "glutin_glx_sys", 985 | "glutin_wgl_sys", 986 | "libloading", 987 | "objc2", 988 | "once_cell", 989 | "raw-window-handle", 990 | "wayland-sys 0.30.1", 991 | "windows-sys 0.45.0", 992 | "x11-dl", 993 | ] 994 | 995 | [[package]] 996 | name = "glutin-winit" 997 | version = "0.3.0" 998 | source = "registry+https://github.com/rust-lang/crates.io-index" 999 | checksum = "629a873fc04062830bfe8f97c03773bcd7b371e23bcc465d0a61448cd1588fa4" 1000 | dependencies = [ 1001 | "cfg_aliases", 1002 | "glutin", 1003 | "raw-window-handle", 1004 | "winit", 1005 | ] 1006 | 1007 | [[package]] 1008 | name = "glutin_egl_sys" 1009 | version = "0.4.0" 1010 | source = "registry+https://github.com/rust-lang/crates.io-index" 1011 | checksum = "e5aaf0abb5c4148685b33101ae326a207946b4d3764d6cdc79f8316cdaa8367d" 1012 | dependencies = [ 1013 | "gl_generator", 1014 | "windows-sys 0.45.0", 1015 | ] 1016 | 1017 | [[package]] 1018 | name = "glutin_glx_sys" 1019 | version = "0.4.0" 1020 | source = "registry+https://github.com/rust-lang/crates.io-index" 1021 | checksum = "1b53cb5fe568964aa066a3ba91eac5ecbac869fb0842cd0dc9e412434f1a1494" 1022 | dependencies = [ 1023 | "gl_generator", 1024 | "x11-dl", 1025 | ] 1026 | 1027 | [[package]] 1028 | name = "glutin_wgl_sys" 1029 | version = "0.4.0" 1030 | source = "registry+https://github.com/rust-lang/crates.io-index" 1031 | checksum = "ef89398e90033fc6bc65e9bd42fd29bbbfd483bda5b56dc5562f455550618165" 1032 | dependencies = [ 1033 | "gl_generator", 1034 | ] 1035 | 1036 | [[package]] 1037 | name = "hashbrown" 1038 | version = "0.12.3" 1039 | source = "registry+https://github.com/rust-lang/crates.io-index" 1040 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 1041 | 1042 | [[package]] 1043 | name = "hermit-abi" 1044 | version = "0.3.1" 1045 | source = "registry+https://github.com/rust-lang/crates.io-index" 1046 | checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" 1047 | 1048 | [[package]] 1049 | name = "hex" 1050 | version = "0.4.3" 1051 | source = "registry+https://github.com/rust-lang/crates.io-index" 1052 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1053 | 1054 | [[package]] 1055 | name = "idna" 1056 | version = "0.3.0" 1057 | source = "registry+https://github.com/rust-lang/crates.io-index" 1058 | checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" 1059 | dependencies = [ 1060 | "unicode-bidi", 1061 | "unicode-normalization", 1062 | ] 1063 | 1064 | [[package]] 1065 | name = "indexmap" 1066 | version = "1.9.2" 1067 | source = "registry+https://github.com/rust-lang/crates.io-index" 1068 | checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" 1069 | dependencies = [ 1070 | "autocfg", 1071 | "hashbrown", 1072 | ] 1073 | 1074 | [[package]] 1075 | name = "instant" 1076 | version = "0.1.12" 1077 | source = "registry+https://github.com/rust-lang/crates.io-index" 1078 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 1079 | dependencies = [ 1080 | "cfg-if", 1081 | "js-sys", 1082 | "wasm-bindgen", 1083 | "web-sys", 1084 | ] 1085 | 1086 | [[package]] 1087 | name = "io-lifetimes" 1088 | version = "1.0.9" 1089 | source = "registry+https://github.com/rust-lang/crates.io-index" 1090 | checksum = "09270fd4fa1111bc614ed2246c7ef56239a3063d5be0d1ec3b589c505d400aeb" 1091 | dependencies = [ 1092 | "hermit-abi", 1093 | "libc", 1094 | "windows-sys 0.45.0", 1095 | ] 1096 | 1097 | [[package]] 1098 | name = "jni" 1099 | version = "0.21.1" 1100 | source = "registry+https://github.com/rust-lang/crates.io-index" 1101 | checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" 1102 | dependencies = [ 1103 | "cesu8", 1104 | "cfg-if", 1105 | "combine", 1106 | "jni-sys", 1107 | "log", 1108 | "thiserror", 1109 | "walkdir", 1110 | "windows-sys 0.45.0", 1111 | ] 1112 | 1113 | [[package]] 1114 | name = "jni-sys" 1115 | version = "0.3.0" 1116 | source = "registry+https://github.com/rust-lang/crates.io-index" 1117 | checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 1118 | 1119 | [[package]] 1120 | name = "jobserver" 1121 | version = "0.1.26" 1122 | source = "registry+https://github.com/rust-lang/crates.io-index" 1123 | checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" 1124 | dependencies = [ 1125 | "libc", 1126 | ] 1127 | 1128 | [[package]] 1129 | name = "js-sys" 1130 | version = "0.3.61" 1131 | source = "registry+https://github.com/rust-lang/crates.io-index" 1132 | checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" 1133 | dependencies = [ 1134 | "wasm-bindgen", 1135 | ] 1136 | 1137 | [[package]] 1138 | name = "khronos_api" 1139 | version = "3.1.0" 1140 | source = "registry+https://github.com/rust-lang/crates.io-index" 1141 | checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" 1142 | 1143 | [[package]] 1144 | name = "lazy_static" 1145 | version = "1.4.0" 1146 | source = "registry+https://github.com/rust-lang/crates.io-index" 1147 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1148 | 1149 | [[package]] 1150 | name = "libc" 1151 | version = "0.2.140" 1152 | source = "registry+https://github.com/rust-lang/crates.io-index" 1153 | checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" 1154 | 1155 | [[package]] 1156 | name = "libloading" 1157 | version = "0.7.4" 1158 | source = "registry+https://github.com/rust-lang/crates.io-index" 1159 | checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" 1160 | dependencies = [ 1161 | "cfg-if", 1162 | "winapi", 1163 | ] 1164 | 1165 | [[package]] 1166 | name = "linux-raw-sys" 1167 | version = "0.1.4" 1168 | source = "registry+https://github.com/rust-lang/crates.io-index" 1169 | checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" 1170 | 1171 | [[package]] 1172 | name = "lock_api" 1173 | version = "0.4.9" 1174 | source = "registry+https://github.com/rust-lang/crates.io-index" 1175 | checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" 1176 | dependencies = [ 1177 | "autocfg", 1178 | "scopeguard", 1179 | ] 1180 | 1181 | [[package]] 1182 | name = "log" 1183 | version = "0.4.17" 1184 | source = "registry+https://github.com/rust-lang/crates.io-index" 1185 | checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" 1186 | dependencies = [ 1187 | "cfg-if", 1188 | ] 1189 | 1190 | [[package]] 1191 | name = "malloc_buf" 1192 | version = "0.0.6" 1193 | source = "registry+https://github.com/rust-lang/crates.io-index" 1194 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 1195 | dependencies = [ 1196 | "libc", 1197 | ] 1198 | 1199 | [[package]] 1200 | name = "memchr" 1201 | version = "2.5.0" 1202 | source = "registry+https://github.com/rust-lang/crates.io-index" 1203 | checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" 1204 | 1205 | [[package]] 1206 | name = "memmap2" 1207 | version = "0.5.10" 1208 | source = "registry+https://github.com/rust-lang/crates.io-index" 1209 | checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" 1210 | dependencies = [ 1211 | "libc", 1212 | ] 1213 | 1214 | [[package]] 1215 | name = "memoffset" 1216 | version = "0.6.5" 1217 | source = "registry+https://github.com/rust-lang/crates.io-index" 1218 | checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" 1219 | dependencies = [ 1220 | "autocfg", 1221 | ] 1222 | 1223 | [[package]] 1224 | name = "memoffset" 1225 | version = "0.7.1" 1226 | source = "registry+https://github.com/rust-lang/crates.io-index" 1227 | checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" 1228 | dependencies = [ 1229 | "autocfg", 1230 | ] 1231 | 1232 | [[package]] 1233 | name = "minimal-lexical" 1234 | version = "0.2.1" 1235 | source = "registry+https://github.com/rust-lang/crates.io-index" 1236 | checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 1237 | 1238 | [[package]] 1239 | name = "miniz_oxide" 1240 | version = "0.6.2" 1241 | source = "registry+https://github.com/rust-lang/crates.io-index" 1242 | checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" 1243 | dependencies = [ 1244 | "adler", 1245 | ] 1246 | 1247 | [[package]] 1248 | name = "mio" 1249 | version = "0.8.6" 1250 | source = "registry+https://github.com/rust-lang/crates.io-index" 1251 | checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" 1252 | dependencies = [ 1253 | "libc", 1254 | "log", 1255 | "wasi", 1256 | "windows-sys 0.45.0", 1257 | ] 1258 | 1259 | [[package]] 1260 | name = "ndk" 1261 | version = "0.7.0" 1262 | source = "registry+https://github.com/rust-lang/crates.io-index" 1263 | checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" 1264 | dependencies = [ 1265 | "bitflags", 1266 | "jni-sys", 1267 | "ndk-sys", 1268 | "num_enum", 1269 | "raw-window-handle", 1270 | "thiserror", 1271 | ] 1272 | 1273 | [[package]] 1274 | name = "ndk-context" 1275 | version = "0.1.1" 1276 | source = "registry+https://github.com/rust-lang/crates.io-index" 1277 | checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 1278 | 1279 | [[package]] 1280 | name = "ndk-sys" 1281 | version = "0.4.1+23.1.7779620" 1282 | source = "registry+https://github.com/rust-lang/crates.io-index" 1283 | checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" 1284 | dependencies = [ 1285 | "jni-sys", 1286 | ] 1287 | 1288 | [[package]] 1289 | name = "nix" 1290 | version = "0.24.3" 1291 | source = "registry+https://github.com/rust-lang/crates.io-index" 1292 | checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" 1293 | dependencies = [ 1294 | "bitflags", 1295 | "cfg-if", 1296 | "libc", 1297 | "memoffset 0.6.5", 1298 | ] 1299 | 1300 | [[package]] 1301 | name = "nix" 1302 | version = "0.25.1" 1303 | source = "registry+https://github.com/rust-lang/crates.io-index" 1304 | checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" 1305 | dependencies = [ 1306 | "autocfg", 1307 | "bitflags", 1308 | "cfg-if", 1309 | "libc", 1310 | "memoffset 0.6.5", 1311 | ] 1312 | 1313 | [[package]] 1314 | name = "nix" 1315 | version = "0.26.2" 1316 | source = "registry+https://github.com/rust-lang/crates.io-index" 1317 | checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" 1318 | dependencies = [ 1319 | "bitflags", 1320 | "cfg-if", 1321 | "libc", 1322 | "memoffset 0.7.1", 1323 | "pin-utils", 1324 | "static_assertions", 1325 | ] 1326 | 1327 | [[package]] 1328 | name = "nohash-hasher" 1329 | version = "0.2.0" 1330 | source = "registry+https://github.com/rust-lang/crates.io-index" 1331 | checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" 1332 | 1333 | [[package]] 1334 | name = "nom" 1335 | version = "7.1.3" 1336 | source = "registry+https://github.com/rust-lang/crates.io-index" 1337 | checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 1338 | dependencies = [ 1339 | "memchr", 1340 | "minimal-lexical", 1341 | ] 1342 | 1343 | [[package]] 1344 | name = "num_enum" 1345 | version = "0.5.11" 1346 | source = "registry+https://github.com/rust-lang/crates.io-index" 1347 | checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" 1348 | dependencies = [ 1349 | "num_enum_derive", 1350 | ] 1351 | 1352 | [[package]] 1353 | name = "num_enum_derive" 1354 | version = "0.5.11" 1355 | source = "registry+https://github.com/rust-lang/crates.io-index" 1356 | checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" 1357 | dependencies = [ 1358 | "proc-macro-crate", 1359 | "proc-macro2", 1360 | "quote", 1361 | "syn 1.0.109", 1362 | ] 1363 | 1364 | [[package]] 1365 | name = "objc" 1366 | version = "0.2.7" 1367 | source = "registry+https://github.com/rust-lang/crates.io-index" 1368 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 1369 | dependencies = [ 1370 | "malloc_buf", 1371 | ] 1372 | 1373 | [[package]] 1374 | name = "objc-foundation" 1375 | version = "0.1.1" 1376 | source = "registry+https://github.com/rust-lang/crates.io-index" 1377 | checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" 1378 | dependencies = [ 1379 | "block", 1380 | "objc", 1381 | "objc_id", 1382 | ] 1383 | 1384 | [[package]] 1385 | name = "objc-sys" 1386 | version = "0.2.0-beta.2" 1387 | source = "registry+https://github.com/rust-lang/crates.io-index" 1388 | checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" 1389 | 1390 | [[package]] 1391 | name = "objc2" 1392 | version = "0.3.0-beta.3" 1393 | source = "registry+https://github.com/rust-lang/crates.io-index" 1394 | checksum = "fe31e5425d3d0b89a15982c024392815da40689aceb34bad364d58732bcfd649" 1395 | dependencies = [ 1396 | "block2", 1397 | "objc-sys", 1398 | "objc2-encode", 1399 | ] 1400 | 1401 | [[package]] 1402 | name = "objc2-encode" 1403 | version = "2.0.0-pre.2" 1404 | source = "registry+https://github.com/rust-lang/crates.io-index" 1405 | checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" 1406 | dependencies = [ 1407 | "objc-sys", 1408 | ] 1409 | 1410 | [[package]] 1411 | name = "objc_id" 1412 | version = "0.1.1" 1413 | source = "registry+https://github.com/rust-lang/crates.io-index" 1414 | checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" 1415 | dependencies = [ 1416 | "objc", 1417 | ] 1418 | 1419 | [[package]] 1420 | name = "once_cell" 1421 | version = "1.17.1" 1422 | source = "registry+https://github.com/rust-lang/crates.io-index" 1423 | checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" 1424 | 1425 | [[package]] 1426 | name = "orbclient" 1427 | version = "0.3.43" 1428 | source = "registry+https://github.com/rust-lang/crates.io-index" 1429 | checksum = "974465c5e83cf9df05c1e4137b271d29035c902e39e5ad4c1939837e22160af8" 1430 | dependencies = [ 1431 | "cfg-if", 1432 | "redox_syscall 0.2.16", 1433 | "wasm-bindgen", 1434 | "web-sys", 1435 | ] 1436 | 1437 | [[package]] 1438 | name = "ordered-stream" 1439 | version = "0.2.0" 1440 | source = "registry+https://github.com/rust-lang/crates.io-index" 1441 | checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" 1442 | dependencies = [ 1443 | "futures-core", 1444 | "pin-project-lite", 1445 | ] 1446 | 1447 | [[package]] 1448 | name = "owned_ttf_parser" 1449 | version = "0.18.1" 1450 | source = "registry+https://github.com/rust-lang/crates.io-index" 1451 | checksum = "e25e9fb15717794fae58ab55c26e044103aad13186fbb625893f9a3bbcc24228" 1452 | dependencies = [ 1453 | "ttf-parser", 1454 | ] 1455 | 1456 | [[package]] 1457 | name = "parking" 1458 | version = "2.0.0" 1459 | source = "registry+https://github.com/rust-lang/crates.io-index" 1460 | checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" 1461 | 1462 | [[package]] 1463 | name = "parking_lot" 1464 | version = "0.12.1" 1465 | source = "registry+https://github.com/rust-lang/crates.io-index" 1466 | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 1467 | dependencies = [ 1468 | "lock_api", 1469 | "parking_lot_core", 1470 | ] 1471 | 1472 | [[package]] 1473 | name = "parking_lot_core" 1474 | version = "0.9.7" 1475 | source = "registry+https://github.com/rust-lang/crates.io-index" 1476 | checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" 1477 | dependencies = [ 1478 | "cfg-if", 1479 | "libc", 1480 | "redox_syscall 0.2.16", 1481 | "smallvec", 1482 | "windows-sys 0.45.0", 1483 | ] 1484 | 1485 | [[package]] 1486 | name = "paste" 1487 | version = "1.0.12" 1488 | source = "registry+https://github.com/rust-lang/crates.io-index" 1489 | checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" 1490 | 1491 | [[package]] 1492 | name = "percent-encoding" 1493 | version = "2.2.0" 1494 | source = "registry+https://github.com/rust-lang/crates.io-index" 1495 | checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" 1496 | 1497 | [[package]] 1498 | name = "pin-project-lite" 1499 | version = "0.2.9" 1500 | source = "registry+https://github.com/rust-lang/crates.io-index" 1501 | checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" 1502 | 1503 | [[package]] 1504 | name = "pin-utils" 1505 | version = "0.1.0" 1506 | source = "registry+https://github.com/rust-lang/crates.io-index" 1507 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1508 | 1509 | [[package]] 1510 | name = "pkg-config" 1511 | version = "0.3.26" 1512 | source = "registry+https://github.com/rust-lang/crates.io-index" 1513 | checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" 1514 | 1515 | [[package]] 1516 | name = "png" 1517 | version = "0.17.7" 1518 | source = "registry+https://github.com/rust-lang/crates.io-index" 1519 | checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638" 1520 | dependencies = [ 1521 | "bitflags", 1522 | "crc32fast", 1523 | "flate2", 1524 | "miniz_oxide", 1525 | ] 1526 | 1527 | [[package]] 1528 | name = "polling" 1529 | version = "2.6.0" 1530 | source = "registry+https://github.com/rust-lang/crates.io-index" 1531 | checksum = "7e1f879b2998099c2d69ab9605d145d5b661195627eccc680002c4918a7fb6fa" 1532 | dependencies = [ 1533 | "autocfg", 1534 | "bitflags", 1535 | "cfg-if", 1536 | "concurrent-queue", 1537 | "libc", 1538 | "log", 1539 | "pin-project-lite", 1540 | "windows-sys 0.45.0", 1541 | ] 1542 | 1543 | [[package]] 1544 | name = "ppv-lite86" 1545 | version = "0.2.17" 1546 | source = "registry+https://github.com/rust-lang/crates.io-index" 1547 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 1548 | 1549 | [[package]] 1550 | name = "proc-macro-crate" 1551 | version = "1.3.1" 1552 | source = "registry+https://github.com/rust-lang/crates.io-index" 1553 | checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" 1554 | dependencies = [ 1555 | "once_cell", 1556 | "toml_edit", 1557 | ] 1558 | 1559 | [[package]] 1560 | name = "proc-macro2" 1561 | version = "1.0.52" 1562 | source = "registry+https://github.com/rust-lang/crates.io-index" 1563 | checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224" 1564 | dependencies = [ 1565 | "unicode-ident", 1566 | ] 1567 | 1568 | [[package]] 1569 | name = "quote" 1570 | version = "1.0.26" 1571 | source = "registry+https://github.com/rust-lang/crates.io-index" 1572 | checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" 1573 | dependencies = [ 1574 | "proc-macro2", 1575 | ] 1576 | 1577 | [[package]] 1578 | name = "rand" 1579 | version = "0.8.5" 1580 | source = "registry+https://github.com/rust-lang/crates.io-index" 1581 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1582 | dependencies = [ 1583 | "libc", 1584 | "rand_chacha", 1585 | "rand_core", 1586 | ] 1587 | 1588 | [[package]] 1589 | name = "rand_chacha" 1590 | version = "0.3.1" 1591 | source = "registry+https://github.com/rust-lang/crates.io-index" 1592 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 1593 | dependencies = [ 1594 | "ppv-lite86", 1595 | "rand_core", 1596 | ] 1597 | 1598 | [[package]] 1599 | name = "rand_core" 1600 | version = "0.6.4" 1601 | source = "registry+https://github.com/rust-lang/crates.io-index" 1602 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 1603 | dependencies = [ 1604 | "getrandom", 1605 | ] 1606 | 1607 | [[package]] 1608 | name = "raw-window-handle" 1609 | version = "0.5.1" 1610 | source = "registry+https://github.com/rust-lang/crates.io-index" 1611 | checksum = "4f851a03551ceefd30132e447f07f96cb7011d6b658374f3aed847333adb5559" 1612 | 1613 | [[package]] 1614 | name = "redox_syscall" 1615 | version = "0.2.16" 1616 | source = "registry+https://github.com/rust-lang/crates.io-index" 1617 | checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 1618 | dependencies = [ 1619 | "bitflags", 1620 | ] 1621 | 1622 | [[package]] 1623 | name = "redox_syscall" 1624 | version = "0.3.5" 1625 | source = "registry+https://github.com/rust-lang/crates.io-index" 1626 | checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" 1627 | dependencies = [ 1628 | "bitflags", 1629 | ] 1630 | 1631 | [[package]] 1632 | name = "redox_users" 1633 | version = "0.4.3" 1634 | source = "registry+https://github.com/rust-lang/crates.io-index" 1635 | checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" 1636 | dependencies = [ 1637 | "getrandom", 1638 | "redox_syscall 0.2.16", 1639 | "thiserror", 1640 | ] 1641 | 1642 | [[package]] 1643 | name = "regex" 1644 | version = "1.7.1" 1645 | source = "registry+https://github.com/rust-lang/crates.io-index" 1646 | checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" 1647 | dependencies = [ 1648 | "aho-corasick", 1649 | "memchr", 1650 | "regex-syntax", 1651 | ] 1652 | 1653 | [[package]] 1654 | name = "regex-syntax" 1655 | version = "0.6.28" 1656 | source = "registry+https://github.com/rust-lang/crates.io-index" 1657 | checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" 1658 | 1659 | [[package]] 1660 | name = "rustix" 1661 | version = "0.36.11" 1662 | source = "registry+https://github.com/rust-lang/crates.io-index" 1663 | checksum = "db4165c9963ab29e422d6c26fbc1d37f15bace6b2810221f9d925023480fcf0e" 1664 | dependencies = [ 1665 | "bitflags", 1666 | "errno", 1667 | "io-lifetimes", 1668 | "libc", 1669 | "linux-raw-sys", 1670 | "windows-sys 0.45.0", 1671 | ] 1672 | 1673 | [[package]] 1674 | name = "same-file" 1675 | version = "1.0.6" 1676 | source = "registry+https://github.com/rust-lang/crates.io-index" 1677 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 1678 | dependencies = [ 1679 | "winapi-util", 1680 | ] 1681 | 1682 | [[package]] 1683 | name = "scoped-tls" 1684 | version = "1.0.1" 1685 | source = "registry+https://github.com/rust-lang/crates.io-index" 1686 | checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 1687 | 1688 | [[package]] 1689 | name = "scopeguard" 1690 | version = "1.1.0" 1691 | source = "registry+https://github.com/rust-lang/crates.io-index" 1692 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 1693 | 1694 | [[package]] 1695 | name = "sctk-adwaita" 1696 | version = "0.5.3" 1697 | source = "registry+https://github.com/rust-lang/crates.io-index" 1698 | checksum = "cc56402866c717f54e48b122eb93c69f709bc5a6359c403598992fd92f017931" 1699 | dependencies = [ 1700 | "ab_glyph", 1701 | "log", 1702 | "memmap2", 1703 | "smithay-client-toolkit", 1704 | "tiny-skia", 1705 | ] 1706 | 1707 | [[package]] 1708 | name = "serde" 1709 | version = "1.0.158" 1710 | source = "registry+https://github.com/rust-lang/crates.io-index" 1711 | checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9" 1712 | dependencies = [ 1713 | "serde_derive", 1714 | ] 1715 | 1716 | [[package]] 1717 | name = "serde-xml-rs" 1718 | version = "0.4.1" 1719 | source = "registry+https://github.com/rust-lang/crates.io-index" 1720 | checksum = "f0bf1ba0696ccf0872866277143ff1fd14d22eec235d2b23702f95e6660f7dfa" 1721 | dependencies = [ 1722 | "log", 1723 | "serde", 1724 | "thiserror", 1725 | "xml-rs", 1726 | ] 1727 | 1728 | [[package]] 1729 | name = "serde_derive" 1730 | version = "1.0.158" 1731 | source = "registry+https://github.com/rust-lang/crates.io-index" 1732 | checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad" 1733 | dependencies = [ 1734 | "proc-macro2", 1735 | "quote", 1736 | "syn 2.0.4", 1737 | ] 1738 | 1739 | [[package]] 1740 | name = "serde_repr" 1741 | version = "0.1.12" 1742 | source = "registry+https://github.com/rust-lang/crates.io-index" 1743 | checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" 1744 | dependencies = [ 1745 | "proc-macro2", 1746 | "quote", 1747 | "syn 2.0.4", 1748 | ] 1749 | 1750 | [[package]] 1751 | name = "sha1" 1752 | version = "0.10.5" 1753 | source = "registry+https://github.com/rust-lang/crates.io-index" 1754 | checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" 1755 | dependencies = [ 1756 | "cfg-if", 1757 | "cpufeatures", 1758 | "digest", 1759 | ] 1760 | 1761 | [[package]] 1762 | name = "sharded-slab" 1763 | version = "0.1.4" 1764 | source = "registry+https://github.com/rust-lang/crates.io-index" 1765 | checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" 1766 | dependencies = [ 1767 | "lazy_static", 1768 | ] 1769 | 1770 | [[package]] 1771 | name = "slab" 1772 | version = "0.4.8" 1773 | source = "registry+https://github.com/rust-lang/crates.io-index" 1774 | checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" 1775 | dependencies = [ 1776 | "autocfg", 1777 | ] 1778 | 1779 | [[package]] 1780 | name = "slotmap" 1781 | version = "1.0.6" 1782 | source = "registry+https://github.com/rust-lang/crates.io-index" 1783 | checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" 1784 | dependencies = [ 1785 | "version_check", 1786 | ] 1787 | 1788 | [[package]] 1789 | name = "smallvec" 1790 | version = "1.10.0" 1791 | source = "registry+https://github.com/rust-lang/crates.io-index" 1792 | checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" 1793 | 1794 | [[package]] 1795 | name = "smithay-client-toolkit" 1796 | version = "0.16.0" 1797 | source = "registry+https://github.com/rust-lang/crates.io-index" 1798 | checksum = "f307c47d32d2715eb2e0ece5589057820e0e5e70d07c247d1063e844e107f454" 1799 | dependencies = [ 1800 | "bitflags", 1801 | "calloop", 1802 | "dlib", 1803 | "lazy_static", 1804 | "log", 1805 | "memmap2", 1806 | "nix 0.24.3", 1807 | "pkg-config", 1808 | "wayland-client", 1809 | "wayland-cursor", 1810 | "wayland-protocols", 1811 | ] 1812 | 1813 | [[package]] 1814 | name = "smithay-clipboard" 1815 | version = "0.6.6" 1816 | source = "registry+https://github.com/rust-lang/crates.io-index" 1817 | checksum = "0a345c870a1fae0b1b779085e81b51e614767c239e93503588e54c5b17f4b0e8" 1818 | dependencies = [ 1819 | "smithay-client-toolkit", 1820 | "wayland-client", 1821 | ] 1822 | 1823 | [[package]] 1824 | name = "socket2" 1825 | version = "0.4.9" 1826 | source = "registry+https://github.com/rust-lang/crates.io-index" 1827 | checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" 1828 | dependencies = [ 1829 | "libc", 1830 | "winapi", 1831 | ] 1832 | 1833 | [[package]] 1834 | name = "static_assertions" 1835 | version = "1.1.0" 1836 | source = "registry+https://github.com/rust-lang/crates.io-index" 1837 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 1838 | 1839 | [[package]] 1840 | name = "str-buf" 1841 | version = "1.0.6" 1842 | source = "registry+https://github.com/rust-lang/crates.io-index" 1843 | checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0" 1844 | 1845 | [[package]] 1846 | name = "strict-num" 1847 | version = "0.1.0" 1848 | source = "registry+https://github.com/rust-lang/crates.io-index" 1849 | checksum = "9df65f20698aeed245efdde3628a6b559ea1239bbb871af1b6e3b58c413b2bd1" 1850 | 1851 | [[package]] 1852 | name = "sudoku-solver" 1853 | version = "1.0.0" 1854 | dependencies = [ 1855 | "catppuccin-egui", 1856 | "console_error_panic_hook", 1857 | "eframe", 1858 | "tracing-wasm", 1859 | "wasm-bindgen-futures", 1860 | ] 1861 | 1862 | [[package]] 1863 | name = "syn" 1864 | version = "1.0.109" 1865 | source = "registry+https://github.com/rust-lang/crates.io-index" 1866 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 1867 | dependencies = [ 1868 | "proc-macro2", 1869 | "quote", 1870 | "unicode-ident", 1871 | ] 1872 | 1873 | [[package]] 1874 | name = "syn" 1875 | version = "2.0.4" 1876 | source = "registry+https://github.com/rust-lang/crates.io-index" 1877 | checksum = "2c622ae390c9302e214c31013517c2061ecb2699935882c60a9b37f82f8625ae" 1878 | dependencies = [ 1879 | "proc-macro2", 1880 | "quote", 1881 | "unicode-ident", 1882 | ] 1883 | 1884 | [[package]] 1885 | name = "tempfile" 1886 | version = "3.4.0" 1887 | source = "registry+https://github.com/rust-lang/crates.io-index" 1888 | checksum = "af18f7ae1acd354b992402e9ec5864359d693cd8a79dcbef59f76891701c1e95" 1889 | dependencies = [ 1890 | "cfg-if", 1891 | "fastrand", 1892 | "redox_syscall 0.2.16", 1893 | "rustix", 1894 | "windows-sys 0.42.0", 1895 | ] 1896 | 1897 | [[package]] 1898 | name = "thiserror" 1899 | version = "1.0.40" 1900 | source = "registry+https://github.com/rust-lang/crates.io-index" 1901 | checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" 1902 | dependencies = [ 1903 | "thiserror-impl", 1904 | ] 1905 | 1906 | [[package]] 1907 | name = "thiserror-impl" 1908 | version = "1.0.40" 1909 | source = "registry+https://github.com/rust-lang/crates.io-index" 1910 | checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" 1911 | dependencies = [ 1912 | "proc-macro2", 1913 | "quote", 1914 | "syn 2.0.4", 1915 | ] 1916 | 1917 | [[package]] 1918 | name = "thread_local" 1919 | version = "1.1.7" 1920 | source = "registry+https://github.com/rust-lang/crates.io-index" 1921 | checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" 1922 | dependencies = [ 1923 | "cfg-if", 1924 | "once_cell", 1925 | ] 1926 | 1927 | [[package]] 1928 | name = "tiny-skia" 1929 | version = "0.8.3" 1930 | source = "registry+https://github.com/rust-lang/crates.io-index" 1931 | checksum = "bfef3412c6975196fdfac41ef232f910be2bb37b9dd3313a49a1a6bc815a5bdb" 1932 | dependencies = [ 1933 | "arrayref", 1934 | "arrayvec", 1935 | "bytemuck", 1936 | "cfg-if", 1937 | "png", 1938 | "tiny-skia-path", 1939 | ] 1940 | 1941 | [[package]] 1942 | name = "tiny-skia-path" 1943 | version = "0.8.3" 1944 | source = "registry+https://github.com/rust-lang/crates.io-index" 1945 | checksum = "a4b5edac058fc98f51c935daea4d805b695b38e2f151241cad125ade2a2ac20d" 1946 | dependencies = [ 1947 | "arrayref", 1948 | "bytemuck", 1949 | "strict-num", 1950 | ] 1951 | 1952 | [[package]] 1953 | name = "tinyvec" 1954 | version = "1.6.0" 1955 | source = "registry+https://github.com/rust-lang/crates.io-index" 1956 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 1957 | dependencies = [ 1958 | "tinyvec_macros", 1959 | ] 1960 | 1961 | [[package]] 1962 | name = "tinyvec_macros" 1963 | version = "0.1.1" 1964 | source = "registry+https://github.com/rust-lang/crates.io-index" 1965 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 1966 | 1967 | [[package]] 1968 | name = "toml_datetime" 1969 | version = "0.6.1" 1970 | source = "registry+https://github.com/rust-lang/crates.io-index" 1971 | checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" 1972 | 1973 | [[package]] 1974 | name = "toml_edit" 1975 | version = "0.19.7" 1976 | source = "registry+https://github.com/rust-lang/crates.io-index" 1977 | checksum = "dc18466501acd8ac6a3f615dd29a3438f8ca6bb3b19537138b3106e575621274" 1978 | dependencies = [ 1979 | "indexmap", 1980 | "toml_datetime", 1981 | "winnow", 1982 | ] 1983 | 1984 | [[package]] 1985 | name = "tracing" 1986 | version = "0.1.37" 1987 | source = "registry+https://github.com/rust-lang/crates.io-index" 1988 | checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" 1989 | dependencies = [ 1990 | "cfg-if", 1991 | "pin-project-lite", 1992 | "tracing-attributes", 1993 | "tracing-core", 1994 | ] 1995 | 1996 | [[package]] 1997 | name = "tracing-attributes" 1998 | version = "0.1.23" 1999 | source = "registry+https://github.com/rust-lang/crates.io-index" 2000 | checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" 2001 | dependencies = [ 2002 | "proc-macro2", 2003 | "quote", 2004 | "syn 1.0.109", 2005 | ] 2006 | 2007 | [[package]] 2008 | name = "tracing-core" 2009 | version = "0.1.30" 2010 | source = "registry+https://github.com/rust-lang/crates.io-index" 2011 | checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" 2012 | dependencies = [ 2013 | "once_cell", 2014 | ] 2015 | 2016 | [[package]] 2017 | name = "tracing-subscriber" 2018 | version = "0.3.17" 2019 | source = "registry+https://github.com/rust-lang/crates.io-index" 2020 | checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" 2021 | dependencies = [ 2022 | "sharded-slab", 2023 | "thread_local", 2024 | "tracing-core", 2025 | ] 2026 | 2027 | [[package]] 2028 | name = "tracing-wasm" 2029 | version = "0.2.1" 2030 | source = "registry+https://github.com/rust-lang/crates.io-index" 2031 | checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07" 2032 | dependencies = [ 2033 | "tracing", 2034 | "tracing-subscriber", 2035 | "wasm-bindgen", 2036 | ] 2037 | 2038 | [[package]] 2039 | name = "ttf-parser" 2040 | version = "0.18.1" 2041 | source = "registry+https://github.com/rust-lang/crates.io-index" 2042 | checksum = "0609f771ad9c6155384897e1df4d948e692667cc0588548b68eb44d052b27633" 2043 | 2044 | [[package]] 2045 | name = "typenum" 2046 | version = "1.16.0" 2047 | source = "registry+https://github.com/rust-lang/crates.io-index" 2048 | checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" 2049 | 2050 | [[package]] 2051 | name = "uds_windows" 2052 | version = "1.0.2" 2053 | source = "registry+https://github.com/rust-lang/crates.io-index" 2054 | checksum = "ce65604324d3cce9b966701489fbd0cf318cb1f7bd9dd07ac9a4ee6fb791930d" 2055 | dependencies = [ 2056 | "tempfile", 2057 | "winapi", 2058 | ] 2059 | 2060 | [[package]] 2061 | name = "unicode-bidi" 2062 | version = "0.3.13" 2063 | source = "registry+https://github.com/rust-lang/crates.io-index" 2064 | checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" 2065 | 2066 | [[package]] 2067 | name = "unicode-ident" 2068 | version = "1.0.8" 2069 | source = "registry+https://github.com/rust-lang/crates.io-index" 2070 | checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" 2071 | 2072 | [[package]] 2073 | name = "unicode-normalization" 2074 | version = "0.1.22" 2075 | source = "registry+https://github.com/rust-lang/crates.io-index" 2076 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 2077 | dependencies = [ 2078 | "tinyvec", 2079 | ] 2080 | 2081 | [[package]] 2082 | name = "url" 2083 | version = "2.3.1" 2084 | source = "registry+https://github.com/rust-lang/crates.io-index" 2085 | checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" 2086 | dependencies = [ 2087 | "form_urlencoded", 2088 | "idna", 2089 | "percent-encoding", 2090 | ] 2091 | 2092 | [[package]] 2093 | name = "vec_map" 2094 | version = "0.8.2" 2095 | source = "registry+https://github.com/rust-lang/crates.io-index" 2096 | checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" 2097 | 2098 | [[package]] 2099 | name = "version_check" 2100 | version = "0.9.4" 2101 | source = "registry+https://github.com/rust-lang/crates.io-index" 2102 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 2103 | 2104 | [[package]] 2105 | name = "waker-fn" 2106 | version = "1.1.0" 2107 | source = "registry+https://github.com/rust-lang/crates.io-index" 2108 | checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" 2109 | 2110 | [[package]] 2111 | name = "walkdir" 2112 | version = "2.3.3" 2113 | source = "registry+https://github.com/rust-lang/crates.io-index" 2114 | checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" 2115 | dependencies = [ 2116 | "same-file", 2117 | "winapi-util", 2118 | ] 2119 | 2120 | [[package]] 2121 | name = "wasi" 2122 | version = "0.11.0+wasi-snapshot-preview1" 2123 | source = "registry+https://github.com/rust-lang/crates.io-index" 2124 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 2125 | 2126 | [[package]] 2127 | name = "wasm-bindgen" 2128 | version = "0.2.84" 2129 | source = "registry+https://github.com/rust-lang/crates.io-index" 2130 | checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" 2131 | dependencies = [ 2132 | "cfg-if", 2133 | "wasm-bindgen-macro", 2134 | ] 2135 | 2136 | [[package]] 2137 | name = "wasm-bindgen-backend" 2138 | version = "0.2.84" 2139 | source = "registry+https://github.com/rust-lang/crates.io-index" 2140 | checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" 2141 | dependencies = [ 2142 | "bumpalo", 2143 | "log", 2144 | "once_cell", 2145 | "proc-macro2", 2146 | "quote", 2147 | "syn 1.0.109", 2148 | "wasm-bindgen-shared", 2149 | ] 2150 | 2151 | [[package]] 2152 | name = "wasm-bindgen-futures" 2153 | version = "0.4.34" 2154 | source = "registry+https://github.com/rust-lang/crates.io-index" 2155 | checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" 2156 | dependencies = [ 2157 | "cfg-if", 2158 | "js-sys", 2159 | "wasm-bindgen", 2160 | "web-sys", 2161 | ] 2162 | 2163 | [[package]] 2164 | name = "wasm-bindgen-macro" 2165 | version = "0.2.84" 2166 | source = "registry+https://github.com/rust-lang/crates.io-index" 2167 | checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" 2168 | dependencies = [ 2169 | "quote", 2170 | "wasm-bindgen-macro-support", 2171 | ] 2172 | 2173 | [[package]] 2174 | name = "wasm-bindgen-macro-support" 2175 | version = "0.2.84" 2176 | source = "registry+https://github.com/rust-lang/crates.io-index" 2177 | checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" 2178 | dependencies = [ 2179 | "proc-macro2", 2180 | "quote", 2181 | "syn 1.0.109", 2182 | "wasm-bindgen-backend", 2183 | "wasm-bindgen-shared", 2184 | ] 2185 | 2186 | [[package]] 2187 | name = "wasm-bindgen-shared" 2188 | version = "0.2.84" 2189 | source = "registry+https://github.com/rust-lang/crates.io-index" 2190 | checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" 2191 | 2192 | [[package]] 2193 | name = "wayland-client" 2194 | version = "0.29.5" 2195 | source = "registry+https://github.com/rust-lang/crates.io-index" 2196 | checksum = "3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715" 2197 | dependencies = [ 2198 | "bitflags", 2199 | "downcast-rs", 2200 | "libc", 2201 | "nix 0.24.3", 2202 | "scoped-tls", 2203 | "wayland-commons", 2204 | "wayland-scanner", 2205 | "wayland-sys 0.29.5", 2206 | ] 2207 | 2208 | [[package]] 2209 | name = "wayland-commons" 2210 | version = "0.29.5" 2211 | source = "registry+https://github.com/rust-lang/crates.io-index" 2212 | checksum = "8691f134d584a33a6606d9d717b95c4fa20065605f798a3f350d78dced02a902" 2213 | dependencies = [ 2214 | "nix 0.24.3", 2215 | "once_cell", 2216 | "smallvec", 2217 | "wayland-sys 0.29.5", 2218 | ] 2219 | 2220 | [[package]] 2221 | name = "wayland-cursor" 2222 | version = "0.29.5" 2223 | source = "registry+https://github.com/rust-lang/crates.io-index" 2224 | checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" 2225 | dependencies = [ 2226 | "nix 0.24.3", 2227 | "wayland-client", 2228 | "xcursor", 2229 | ] 2230 | 2231 | [[package]] 2232 | name = "wayland-protocols" 2233 | version = "0.29.5" 2234 | source = "registry+https://github.com/rust-lang/crates.io-index" 2235 | checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" 2236 | dependencies = [ 2237 | "bitflags", 2238 | "wayland-client", 2239 | "wayland-commons", 2240 | "wayland-scanner", 2241 | ] 2242 | 2243 | [[package]] 2244 | name = "wayland-scanner" 2245 | version = "0.29.5" 2246 | source = "registry+https://github.com/rust-lang/crates.io-index" 2247 | checksum = "8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53" 2248 | dependencies = [ 2249 | "proc-macro2", 2250 | "quote", 2251 | "xml-rs", 2252 | ] 2253 | 2254 | [[package]] 2255 | name = "wayland-sys" 2256 | version = "0.29.5" 2257 | source = "registry+https://github.com/rust-lang/crates.io-index" 2258 | checksum = "be12ce1a3c39ec7dba25594b97b42cb3195d54953ddb9d3d95a7c3902bc6e9d4" 2259 | dependencies = [ 2260 | "dlib", 2261 | "lazy_static", 2262 | "pkg-config", 2263 | ] 2264 | 2265 | [[package]] 2266 | name = "wayland-sys" 2267 | version = "0.30.1" 2268 | source = "registry+https://github.com/rust-lang/crates.io-index" 2269 | checksum = "96b2a02ac608e07132978689a6f9bf4214949c85998c247abadd4f4129b1aa06" 2270 | dependencies = [ 2271 | "dlib", 2272 | "lazy_static", 2273 | "log", 2274 | "pkg-config", 2275 | ] 2276 | 2277 | [[package]] 2278 | name = "web-sys" 2279 | version = "0.3.61" 2280 | source = "registry+https://github.com/rust-lang/crates.io-index" 2281 | checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" 2282 | dependencies = [ 2283 | "js-sys", 2284 | "wasm-bindgen", 2285 | ] 2286 | 2287 | [[package]] 2288 | name = "webbrowser" 2289 | version = "0.8.8" 2290 | source = "registry+https://github.com/rust-lang/crates.io-index" 2291 | checksum = "579cc485bd5ce5bfa0d738e4921dd0b956eca9800be1fd2e5257ebe95bc4617e" 2292 | dependencies = [ 2293 | "core-foundation", 2294 | "dirs", 2295 | "jni", 2296 | "log", 2297 | "ndk-context", 2298 | "objc", 2299 | "raw-window-handle", 2300 | "url", 2301 | "web-sys", 2302 | ] 2303 | 2304 | [[package]] 2305 | name = "winapi" 2306 | version = "0.3.9" 2307 | source = "registry+https://github.com/rust-lang/crates.io-index" 2308 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 2309 | dependencies = [ 2310 | "winapi-i686-pc-windows-gnu", 2311 | "winapi-x86_64-pc-windows-gnu", 2312 | ] 2313 | 2314 | [[package]] 2315 | name = "winapi-i686-pc-windows-gnu" 2316 | version = "0.4.0" 2317 | source = "registry+https://github.com/rust-lang/crates.io-index" 2318 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 2319 | 2320 | [[package]] 2321 | name = "winapi-util" 2322 | version = "0.1.5" 2323 | source = "registry+https://github.com/rust-lang/crates.io-index" 2324 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 2325 | dependencies = [ 2326 | "winapi", 2327 | ] 2328 | 2329 | [[package]] 2330 | name = "winapi-wsapoll" 2331 | version = "0.1.1" 2332 | source = "registry+https://github.com/rust-lang/crates.io-index" 2333 | checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" 2334 | dependencies = [ 2335 | "winapi", 2336 | ] 2337 | 2338 | [[package]] 2339 | name = "winapi-x86_64-pc-windows-gnu" 2340 | version = "0.4.0" 2341 | source = "registry+https://github.com/rust-lang/crates.io-index" 2342 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 2343 | 2344 | [[package]] 2345 | name = "windows" 2346 | version = "0.42.0" 2347 | source = "registry+https://github.com/rust-lang/crates.io-index" 2348 | checksum = "0286ba339aa753e70765d521bb0242cc48e1194562bfa2a2ad7ac8a6de28f5d5" 2349 | dependencies = [ 2350 | "windows-implement", 2351 | "windows_aarch64_gnullvm", 2352 | "windows_aarch64_msvc", 2353 | "windows_i686_gnu", 2354 | "windows_i686_msvc", 2355 | "windows_x86_64_gnu", 2356 | "windows_x86_64_gnullvm", 2357 | "windows_x86_64_msvc", 2358 | ] 2359 | 2360 | [[package]] 2361 | name = "windows-implement" 2362 | version = "0.42.0" 2363 | source = "registry+https://github.com/rust-lang/crates.io-index" 2364 | checksum = "9539b6bd3eadbd9de66c9666b22d802b833da7e996bc06896142e09854a61767" 2365 | dependencies = [ 2366 | "proc-macro2", 2367 | "quote", 2368 | "syn 1.0.109", 2369 | ] 2370 | 2371 | [[package]] 2372 | name = "windows-sys" 2373 | version = "0.42.0" 2374 | source = "registry+https://github.com/rust-lang/crates.io-index" 2375 | checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" 2376 | dependencies = [ 2377 | "windows_aarch64_gnullvm", 2378 | "windows_aarch64_msvc", 2379 | "windows_i686_gnu", 2380 | "windows_i686_msvc", 2381 | "windows_x86_64_gnu", 2382 | "windows_x86_64_gnullvm", 2383 | "windows_x86_64_msvc", 2384 | ] 2385 | 2386 | [[package]] 2387 | name = "windows-sys" 2388 | version = "0.45.0" 2389 | source = "registry+https://github.com/rust-lang/crates.io-index" 2390 | checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 2391 | dependencies = [ 2392 | "windows-targets", 2393 | ] 2394 | 2395 | [[package]] 2396 | name = "windows-targets" 2397 | version = "0.42.2" 2398 | source = "registry+https://github.com/rust-lang/crates.io-index" 2399 | checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" 2400 | dependencies = [ 2401 | "windows_aarch64_gnullvm", 2402 | "windows_aarch64_msvc", 2403 | "windows_i686_gnu", 2404 | "windows_i686_msvc", 2405 | "windows_x86_64_gnu", 2406 | "windows_x86_64_gnullvm", 2407 | "windows_x86_64_msvc", 2408 | ] 2409 | 2410 | [[package]] 2411 | name = "windows_aarch64_gnullvm" 2412 | version = "0.42.2" 2413 | source = "registry+https://github.com/rust-lang/crates.io-index" 2414 | checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 2415 | 2416 | [[package]] 2417 | name = "windows_aarch64_msvc" 2418 | version = "0.42.2" 2419 | source = "registry+https://github.com/rust-lang/crates.io-index" 2420 | checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 2421 | 2422 | [[package]] 2423 | name = "windows_i686_gnu" 2424 | version = "0.42.2" 2425 | source = "registry+https://github.com/rust-lang/crates.io-index" 2426 | checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 2427 | 2428 | [[package]] 2429 | name = "windows_i686_msvc" 2430 | version = "0.42.2" 2431 | source = "registry+https://github.com/rust-lang/crates.io-index" 2432 | checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 2433 | 2434 | [[package]] 2435 | name = "windows_x86_64_gnu" 2436 | version = "0.42.2" 2437 | source = "registry+https://github.com/rust-lang/crates.io-index" 2438 | checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 2439 | 2440 | [[package]] 2441 | name = "windows_x86_64_gnullvm" 2442 | version = "0.42.2" 2443 | source = "registry+https://github.com/rust-lang/crates.io-index" 2444 | checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 2445 | 2446 | [[package]] 2447 | name = "windows_x86_64_msvc" 2448 | version = "0.42.2" 2449 | source = "registry+https://github.com/rust-lang/crates.io-index" 2450 | checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 2451 | 2452 | [[package]] 2453 | name = "winit" 2454 | version = "0.28.3" 2455 | source = "registry+https://github.com/rust-lang/crates.io-index" 2456 | checksum = "4f504e8c117b9015f618774f8d58cd4781f5a479bc41079c064f974cbb253874" 2457 | dependencies = [ 2458 | "android-activity", 2459 | "bitflags", 2460 | "cfg_aliases", 2461 | "core-foundation", 2462 | "core-graphics", 2463 | "dispatch", 2464 | "instant", 2465 | "libc", 2466 | "log", 2467 | "mio", 2468 | "ndk", 2469 | "objc2", 2470 | "once_cell", 2471 | "orbclient", 2472 | "percent-encoding", 2473 | "raw-window-handle", 2474 | "redox_syscall 0.3.5", 2475 | "sctk-adwaita", 2476 | "smithay-client-toolkit", 2477 | "wasm-bindgen", 2478 | "wayland-client", 2479 | "wayland-commons", 2480 | "wayland-protocols", 2481 | "wayland-scanner", 2482 | "web-sys", 2483 | "windows-sys 0.45.0", 2484 | "x11-dl", 2485 | ] 2486 | 2487 | [[package]] 2488 | name = "winnow" 2489 | version = "0.3.6" 2490 | source = "registry+https://github.com/rust-lang/crates.io-index" 2491 | checksum = "23d020b441f92996c80d94ae9166e8501e59c7bb56121189dc9eab3bd8216966" 2492 | dependencies = [ 2493 | "memchr", 2494 | ] 2495 | 2496 | [[package]] 2497 | name = "x11-dl" 2498 | version = "2.21.0" 2499 | source = "registry+https://github.com/rust-lang/crates.io-index" 2500 | checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" 2501 | dependencies = [ 2502 | "libc", 2503 | "once_cell", 2504 | "pkg-config", 2505 | ] 2506 | 2507 | [[package]] 2508 | name = "x11rb" 2509 | version = "0.10.1" 2510 | source = "registry+https://github.com/rust-lang/crates.io-index" 2511 | checksum = "592b4883219f345e712b3209c62654ebda0bb50887f330cbd018d0f654bfd507" 2512 | dependencies = [ 2513 | "gethostname", 2514 | "nix 0.24.3", 2515 | "winapi", 2516 | "winapi-wsapoll", 2517 | "x11rb-protocol", 2518 | ] 2519 | 2520 | [[package]] 2521 | name = "x11rb-protocol" 2522 | version = "0.10.0" 2523 | source = "registry+https://github.com/rust-lang/crates.io-index" 2524 | checksum = "56b245751c0ac9db0e006dc812031482784e434630205a93c73cfefcaabeac67" 2525 | dependencies = [ 2526 | "nix 0.24.3", 2527 | ] 2528 | 2529 | [[package]] 2530 | name = "xcursor" 2531 | version = "0.3.4" 2532 | source = "registry+https://github.com/rust-lang/crates.io-index" 2533 | checksum = "463705a63313cd4301184381c5e8042f0a7e9b4bb63653f216311d4ae74690b7" 2534 | dependencies = [ 2535 | "nom", 2536 | ] 2537 | 2538 | [[package]] 2539 | name = "xml-rs" 2540 | version = "0.8.4" 2541 | source = "registry+https://github.com/rust-lang/crates.io-index" 2542 | checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" 2543 | 2544 | [[package]] 2545 | name = "zbus" 2546 | version = "3.11.1" 2547 | source = "registry+https://github.com/rust-lang/crates.io-index" 2548 | checksum = "3dc29e76f558b2cb94190e8605ecfe77dd40f5df8c072951714b4b71a97f5848" 2549 | dependencies = [ 2550 | "async-broadcast", 2551 | "async-executor", 2552 | "async-fs", 2553 | "async-io", 2554 | "async-lock", 2555 | "async-recursion", 2556 | "async-task", 2557 | "async-trait", 2558 | "byteorder", 2559 | "derivative", 2560 | "dirs", 2561 | "enumflags2", 2562 | "event-listener", 2563 | "futures-core", 2564 | "futures-sink", 2565 | "futures-util", 2566 | "hex", 2567 | "nix 0.26.2", 2568 | "once_cell", 2569 | "ordered-stream", 2570 | "rand", 2571 | "serde", 2572 | "serde-xml-rs", 2573 | "serde_repr", 2574 | "sha1", 2575 | "static_assertions", 2576 | "tracing", 2577 | "uds_windows", 2578 | "winapi", 2579 | "zbus_macros", 2580 | "zbus_names", 2581 | "zvariant", 2582 | ] 2583 | 2584 | [[package]] 2585 | name = "zbus_macros" 2586 | version = "3.11.1" 2587 | source = "registry+https://github.com/rust-lang/crates.io-index" 2588 | checksum = "62a80fd82c011cd08459eaaf1fd83d3090c1b61e6d5284360074a7475af3a85d" 2589 | dependencies = [ 2590 | "proc-macro-crate", 2591 | "proc-macro2", 2592 | "quote", 2593 | "regex", 2594 | "syn 1.0.109", 2595 | "zvariant_utils", 2596 | ] 2597 | 2598 | [[package]] 2599 | name = "zbus_names" 2600 | version = "2.5.0" 2601 | source = "registry+https://github.com/rust-lang/crates.io-index" 2602 | checksum = "f34f314916bd89bdb9934154627fab152f4f28acdda03e7c4c68181b214fe7e3" 2603 | dependencies = [ 2604 | "serde", 2605 | "static_assertions", 2606 | "zvariant", 2607 | ] 2608 | 2609 | [[package]] 2610 | name = "zvariant" 2611 | version = "3.12.0" 2612 | source = "registry+https://github.com/rust-lang/crates.io-index" 2613 | checksum = "46fe4914a985446d6fd287019b5fceccce38303d71407d9e6e711d44954a05d8" 2614 | dependencies = [ 2615 | "byteorder", 2616 | "enumflags2", 2617 | "libc", 2618 | "serde", 2619 | "static_assertions", 2620 | "zvariant_derive", 2621 | ] 2622 | 2623 | [[package]] 2624 | name = "zvariant_derive" 2625 | version = "3.12.0" 2626 | source = "registry+https://github.com/rust-lang/crates.io-index" 2627 | checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a" 2628 | dependencies = [ 2629 | "proc-macro-crate", 2630 | "proc-macro2", 2631 | "quote", 2632 | "syn 1.0.109", 2633 | "zvariant_utils", 2634 | ] 2635 | 2636 | [[package]] 2637 | name = "zvariant_utils" 2638 | version = "1.0.0" 2639 | source = "registry+https://github.com/rust-lang/crates.io-index" 2640 | checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b" 2641 | dependencies = [ 2642 | "proc-macro2", 2643 | "quote", 2644 | "syn 1.0.109", 2645 | ] 2646 | --------------------------------------------------------------------------------