├── .gitignore ├── demo.gif ├── rustfmt.toml ├── Cargo.toml ├── src ├── tax.rs ├── list.rs ├── sale │ ├── show.rs │ └── edit.rs ├── action.rs ├── sale.rs └── main.rs ├── LICENSE ├── README.md └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airstrike/iced_receipts/HEAD/demo.gif -------------------------------------------------------------------------------- /rustfmt.toml: -------------------------------------------------------------------------------- 1 | max_width = 80 2 | edition = "2021" 3 | indent_style = "Block" 4 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "receipts" 3 | version = "0.1.0" 4 | edition = "2021" 5 | authors = ["Andy Terra "] 6 | 7 | [dependencies] 8 | iced = { version = "0.13.1", features = ["advanced", "debug"] } 9 | -------------------------------------------------------------------------------- /src/tax.rs: -------------------------------------------------------------------------------- 1 | #[derive(Debug, Clone, Copy, PartialEq, Eq)] 2 | pub enum TaxGroup { 3 | Food, 4 | Alcohol, 5 | NonTaxable, 6 | Other, 7 | } 8 | 9 | impl TaxGroup { 10 | pub const ALL: [TaxGroup; 4] = [ 11 | TaxGroup::Food, 12 | TaxGroup::Alcohol, 13 | TaxGroup::NonTaxable, 14 | TaxGroup::Other, 15 | ]; 16 | 17 | pub fn tax_rate(&self) -> f32 { 18 | match self { 19 | TaxGroup::Food => 0.08, 20 | TaxGroup::Alcohol => 0.10, 21 | TaxGroup::NonTaxable => 0.0, 22 | TaxGroup::Other => 0.08, 23 | } 24 | } 25 | } 26 | 27 | impl std::fmt::Display for TaxGroup { 28 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 29 | write!( 30 | f, 31 | "{}", 32 | match self { 33 | TaxGroup::Food => "Food (8%)", 34 | TaxGroup::Alcohol => "Alcohol (10%)", 35 | TaxGroup::NonTaxable => "Non-taxable", 36 | TaxGroup::Other => "Other (8%)", 37 | } 38 | ) 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Andy Terra 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /src/list.rs: -------------------------------------------------------------------------------- 1 | //! List sales and navigate to sale details or editing 2 | use iced::widget::{button, column, container, horizontal_space, row, text}; 3 | use iced::Alignment::Center; 4 | use iced::{Element, Fill}; 5 | use std::collections::HashMap; 6 | 7 | use crate::Sale; 8 | 9 | #[derive(Debug, Clone)] 10 | pub enum Message { 11 | NewSale, 12 | SelectSale(usize), 13 | } 14 | 15 | pub fn view(sales: &HashMap) -> Element<'_, Message> { 16 | let main_content: Element<_> = if sales.is_empty() { 17 | container( 18 | button( 19 | text("Create your first sale →") 20 | .shaping(text::Shaping::Advanced), 21 | ) 22 | .on_press(Message::NewSale), 23 | ) 24 | .center(Fill) 25 | .into() 26 | } else { 27 | let mut sales_list = column![].spacing(10).width(Fill); 28 | 29 | for (id, sale) in sales { 30 | let total = sale.calculate_total(); 31 | sales_list = sales_list.push( 32 | button( 33 | row![column![ 34 | text(format!("{}", sale.name)).size(13), 35 | text(format!("Total: ${:.2}", total)).size(12).style( 36 | |theme: &iced::Theme| text::Style { 37 | color: Some( 38 | theme.palette().text.scale_alpha(0.8) 39 | ), 40 | } 41 | ) 42 | ] 43 | .width(Fill) 44 | .padding(10)] 45 | .width(Fill), 46 | ) 47 | .style(button::secondary) 48 | .on_press(Message::SelectSale(*id)) 49 | .width(Fill), 50 | ); 51 | } 52 | 53 | column![ 54 | row![ 55 | horizontal_space(), 56 | button(text("New Sale").size(14)) 57 | .style(button::success) 58 | .on_press(Message::NewSale), 59 | ] 60 | .align_y(Center), 61 | sales_list, 62 | ] 63 | .spacing(20) 64 | .width(Fill) 65 | .into() 66 | }; 67 | 68 | container(column![main_content].spacing(20).width(Fill).height(Fill)) 69 | .padding(20) 70 | .into() 71 | } 72 | -------------------------------------------------------------------------------- /src/sale/show.rs: -------------------------------------------------------------------------------- 1 | //! A read-only view of a sale. 2 | use iced::widget::{ 3 | button, column, container, horizontal_space, row, scrollable, text, 4 | }; 5 | use iced::Length::Fill; 6 | use iced::{Alignment, Element, Length}; 7 | 8 | use super::{Instruction, Sale}; 9 | use crate::{Action, Hotkey}; 10 | 11 | #[derive(Debug, Clone)] 12 | pub enum Message { 13 | Back, 14 | StartEdit, 15 | } 16 | 17 | pub fn view(sale: &Sale) -> Element { 18 | let header = row![ 19 | button(text("←").center()).width(40).on_press(Message::Back), 20 | text(&sale.name).size(16), 21 | horizontal_space(), 22 | button("Edit").on_press(Message::StartEdit) 23 | ] 24 | .spacing(10) 25 | .align_y(Alignment::Center); 26 | 27 | let column_headers = row![ 28 | text("Item Name").width(Fill), 29 | text("Qty").align_x(Alignment::Center).width(80.0), 30 | text("Price").align_x(Alignment::End).width(100.0), 31 | text("Tax Group").width(140.0), 32 | text("Total").align_x(Alignment::End).width(100.0), 33 | ] 34 | .spacing(2); 35 | 36 | let items_list = sale.items.iter().fold( 37 | column![column_headers].spacing(5).width(Length::Fill), 38 | |col, item| { 39 | col.push( 40 | container( 41 | row![ 42 | text(&item.name).width(Fill), 43 | text(item.quantity().to_string()) 44 | .align_x(Alignment::Center) 45 | .width(80.0), 46 | text(format!("${:.2}", item.price())) 47 | .align_x(Alignment::End) 48 | .width(100.0), 49 | text(format!("{}", item.tax_group)).width(140.0), 50 | text(format!("${:.2}", item.price() * item.quantity())) 51 | .align_x(Alignment::End) 52 | .width(100.0) 53 | ] 54 | .spacing(5) 55 | .align_y(Alignment::Center), 56 | ) 57 | .style(container::rounded_box) 58 | .padding(0), 59 | ) 60 | }, 61 | ); 62 | 63 | let totals = column![ 64 | row![ 65 | text("Subtotal").width(150.0), 66 | horizontal_space(), 67 | text(format!("${:.2}", sale.calculate_subtotal())) 68 | ], 69 | row![ 70 | text("Service Charge").width(150.0), 71 | text(format!( 72 | "{}%", 73 | sale.service_charge_percent.map_or(0.0, |p| p) 74 | )), 75 | horizontal_space(), 76 | text(format!("${:.2}", sale.calculate_service_charge())) 77 | ], 78 | row![ 79 | text("Tax").width(150.0), 80 | horizontal_space(), 81 | text(format!("${:.2}", sale.calculate_tax())) 82 | ], 83 | row![ 84 | text("Gratuity").width(150.0), 85 | text(format!("${:.2}", sale.gratuity_amount.unwrap_or(0.0))), 86 | horizontal_space(), 87 | text(format!("${:.2}", sale.gratuity_amount.unwrap_or(0.0))) 88 | ], 89 | row![ 90 | text("Total").width(150.0).size(16), 91 | horizontal_space(), 92 | text(format!("${:.2}", sale.calculate_total())).size(16) 93 | ] 94 | ] 95 | .spacing(2) 96 | .width(Length::Fill); 97 | 98 | container( 99 | column![ 100 | header, 101 | container(scrollable(column![items_list,].spacing(10).padding(20))) 102 | .height(Length::Fill) 103 | .style(container::rounded_box), 104 | container(totals).padding(20).style(container::rounded_box) 105 | ] 106 | .spacing(20) 107 | .height(Length::Fill), 108 | ) 109 | .padding(20) 110 | .into() 111 | } 112 | 113 | pub fn handle_hotkey(hotkey: Hotkey) -> Action { 114 | match hotkey { 115 | Hotkey::Escape => Action::instruction(Instruction::Back), 116 | _ => Action::none(), 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | # iced_receipts 4 | 5 | A multi-screen desktop application built with 6 | [iced](https://github.com/iced-rs/iced) demonstrating some neat patterns for 7 | state management, screen transitions, and form handling. 8 | 9 | [![Made with iced](https://iced.rs/badge.svg)](https://github.com/iced-rs/iced) 10 | 11 | App Demonstration 12 | 13 |
14 | 15 | ## Overview 16 | 17 | This example showcases a few useful patterns for building desktop applications with `iced`: 18 | 19 | - Screens sharing single simple straightforward state, as said by someone struck 20 | with some alliteration spell 21 | - A clean and flexible `Action` API for handling screen events and instructions 22 | - Form handling with keyboard navigation (Tab and Escape) 23 | 24 | ## Project Structure 25 | 26 | ``` 27 | src/ 28 | ├── main.rs # App entry point and top level state management 29 | ├── list.rs # Simple sales list screen 30 | ├── sale.rs # Edit/view mode screens example 31 | │ ├── edit.rs # Edit screen for creating and updating sales 32 | │ └── show.rs # Read-only mode for sales 33 | └── action.rs # Action API for handling instructions 34 | ``` 35 | 36 | ## Action API 37 | 38 | The example uses a `Action` type providing a unified way to handle both 39 | instructions and tasks across screens, where instructions are in-app actions 40 | directly by your application while tasks are handled by the `iced` runtime. 41 | 42 | ```rust 43 | pub struct Action { 44 | pub instruction: Option, 45 | pub task: Task, 46 | } 47 | ``` 48 | 49 | One advantage of this approach is that it easily allows the user to compose 50 | an instruction that combines an instruction and a task, whereas if we used an 51 | `enum` we would need to have a variant for instructions, a variant for tasks, and 52 | a variant for combining them. This is useful, for instance, for minor UI-related 53 | tasks such as focusing a specific input field after an instruction is handled by 54 | your app. 55 | 56 | Currently, this sample app only contains one such example: when the user clicks 57 | on "Edit" in the sale "show" mode, the app needs to switch the screen to the 58 | "edit" mode and focus the first input field, so we do that by processing the 59 | `Message::StartEdit` action as follows: 60 | 61 | ```rust 62 | // sale.rs 63 | pub fn update(sale: &mut Sale, message: Message) -> Action { 64 | match message { 65 | Message::Show(msg) => match msg { 66 | // ... 67 | show::Message::StartEdit => { 68 | Action::instruction(Instruction::StartEdit).with_task(focus_next()) 69 | } 70 | }, 71 | } 72 | } 73 | ``` 74 | 75 | The main `App::update` function handles `Message`s by delegating them to the 76 | screens, which return an `Action` from their own `update` functions. So the 77 | app then handles any instructions and tasks contained in that action. Since 78 | instructions can also return tasks, the app chains those returned tasks with the 79 | original task from the action. 80 | 81 | ```rust 82 | // app.rs 83 | impl App { 84 | fn update(&mut self, message: Message) -> Task { 85 | match message { 86 | Message::Sale(sale_id, msg) => { 87 | let sale = /* get sale by id */; 88 | let action = sale::update(sale, msg) 89 | .map_instruction(move |o| Instruction::Sale(sale_id, o)) 90 | .map(move |m| Message::Sale(sale_id, m)); 91 | 92 | // handle instruction returning either a useful task or a dummy 93 | // noop Task::none() 94 | let instruction_task = if let Some(instruction) = action.instruction { 95 | self.perform(instruction) 96 | } else { 97 | Task::none() 98 | }; 99 | 100 | // chain the task returned by the instruction with the task 101 | // from the action 102 | return instruction_task.chain(action.task); 103 | } 104 | 105 | // ...other variants... 106 | } 107 | } 108 | } 109 | ``` 110 | 111 | Though this may seem like a lot of boilerplate, it composes nicely across the 112 | entire application and allows for a clean and flexible way to handle instructions 113 | from child components and any tasks they may want to perform. 114 | 115 | More information about the `Action` type can be found in the 116 | [action.rs](src/action.rs) file. 117 | 118 | ## License 119 | 120 | This project is licensed under the MIT License - see the [LICENSE](LICENSE) file 121 | for details. 122 | 123 | ## Contributing 124 | 125 | This is an example project meant for learning purposes. Feel free to use these 126 | patterns in your own projects! -------------------------------------------------------------------------------- /src/action.rs: -------------------------------------------------------------------------------- 1 | //! A common API for returning [`Task`](iced::Task)s and/or generic 2 | //! `Instruction`s from views. 3 | //! 4 | //! The `Action` type provides a unified way to tell an ancestor component how 5 | //! to modify its state per some `Instruction` and/or provide a [`Task`] which 6 | //! should be returned to the [`iced`] runtime so it can be executed. 7 | //! 8 | //! Examples of instructions include navigating to a different screen, saving 9 | //! changes, or starting an edit. These instructions work directly in the 10 | //! context of some ancestor component, so they do not need to be sent to the 11 | //! runtime. An `Instruction` is just a way to convey an action to an ancestor. 12 | //! Enumerating these instructions in a single (generic) type allows for a more 13 | //! consistent API. 14 | //! 15 | //! A [`Task`] is a way to perform some asynchronous instruction, such as 16 | //! fetching data from a server or something as simple as changing the currently 17 | //! focused widget. These must be returned to the runtime in order for them to 18 | //! be executed. 19 | //! 20 | //! In many instances, you will want to return both an `Instruction` and a 21 | //! [`Task`]. Say, for example, when you'd like to navigate to a different 22 | //! screen *and* focus the first input field. This can be achieved with e.g. 23 | //! `Action::instruction(Instruction::NavigateToScreen).with_task(focus_first_input())`. 24 | //! 25 | //! Generally speaking, an `Action` will alwys be created as a result of 26 | //! processing some other `Message`. For example, a 27 | //! `button("Back").on_press(Message::Back)` will emit a `Message::Back` when 28 | //! pressed, which will then be processed by a `fn update(message: Message) -> 29 | //! Action` function, returning e.g. `Action::instruction(Instruction::Back)`. 30 | //! 31 | //! It is the responsibility of the ancestor component to handle the 32 | //! `Instruction` that is returned from that child view. To make the code easier 33 | //! to follow, it may be advantageous to define a separate `fn 34 | //! perform(instruction: Instruction) -> Task` function to handle any 35 | //! instructions returned by the child view. In some cases, those instructions 36 | //! may result in yet another [`Task`], which would require the parent component 37 | //! to chain the tasks together. An example of this can be be seen in the `fn 38 | //! update` function in `src/main.rs`. 39 | //! 40 | //! This design pattern is common in many [`iced`] applications, although the 41 | //! exact implementation may vary. It is often the case that the `Action` is 42 | //! simply an enum which contains either instructions or tasks, but our proposed 43 | //! design allows for more flexibility and clarity at the expense of slightly 44 | //! more boilerplate upfront, which we think is a worthy tradeoff *for apps 45 | //! which are expected to grow in complexity*. For smaller apps, the simpler 46 | //! enum-based approach may be more appropriate, for example: 47 | //! 48 | //! ```rust 49 | //! pub enum Action { 50 | //! Instruction1, 51 | //! Instruction2, 52 | //! Run(Task), 53 | //! } 54 | //! ``` 55 | use iced::advanced::graphics::futures::MaybeSend; 56 | use iced::Task; 57 | use std::fmt; 58 | 59 | pub struct Action { 60 | pub instruction: Option, 61 | pub task: Task, 62 | } 63 | 64 | impl Action { 65 | /// Create a new `Action` with no `Instruction` or [`Task`](iced::Task). 66 | pub fn none() -> Self { 67 | Self { 68 | instruction: None, 69 | task: Task::none(), 70 | } 71 | } 72 | 73 | /// Create a new `Action` with an `Instruction` and a [`Task`](iced::Task). 74 | pub fn new(instruction: I, task: Task) -> Self { 75 | Self { 76 | instruction: Some(instruction), 77 | task, 78 | } 79 | } 80 | 81 | /// Create a new `Action` with an `Instruction` to be handled by some ancestor 82 | /// component. 83 | pub fn instruction(instruction: I) -> Self { 84 | Self { 85 | instruction: Some(instruction), 86 | task: Task::none(), 87 | } 88 | } 89 | 90 | /// Create a new `Action` with a [`Task`](iced::Task). 91 | pub fn task(task: Task) -> Self { 92 | Self { 93 | instruction: None, 94 | task, 95 | } 96 | } 97 | 98 | /// Map the message of the `Action`'s [`Task`](iced::Task) to a different type. 99 | pub fn map( 100 | self, 101 | f: impl Fn(Message) -> N + MaybeSend + 'static, 102 | ) -> Action 103 | where 104 | Message: MaybeSend + 'static, 105 | N: MaybeSend + 'static, 106 | { 107 | Action { 108 | instruction: self.instruction, 109 | task: self.task.map(f), 110 | } 111 | } 112 | 113 | /// Maps the `Instruction` of the `Action` to a different type. 114 | pub fn map_instruction( 115 | self, 116 | f: impl Fn(I) -> N + MaybeSend + 'static, 117 | ) -> Action 118 | where 119 | I: MaybeSend + 'static, 120 | N: MaybeSend + 'static, 121 | { 122 | Action { 123 | instruction: self.instruction.map(f), 124 | task: self.task, 125 | } 126 | } 127 | 128 | /// Sets the `Instruction` of an `Action`. 129 | pub fn with_instruction(mut self, instruction: I) -> Self { 130 | self.instruction = Some(instruction); 131 | self 132 | } 133 | 134 | /// Sets the [`Task`](iced::Task) of an `Action`. 135 | pub fn with_task(mut self, task: Task) -> Self { 136 | self.task = task; 137 | self 138 | } 139 | } 140 | 141 | impl fmt::Debug 142 | for Action 143 | { 144 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 145 | f.debug_struct("Action") 146 | .field("instruction", &self.instruction) 147 | .finish() 148 | } 149 | } 150 | -------------------------------------------------------------------------------- /src/sale.rs: -------------------------------------------------------------------------------- 1 | //! View and edit sales 2 | use iced::widget::{focus_next, text_input}; 3 | use iced::Element; 4 | use std::sync::atomic::{AtomicUsize, Ordering}; 5 | 6 | use crate::tax::TaxGroup; 7 | use crate::{Action, Hotkey}; 8 | 9 | pub mod edit; 10 | pub mod show; 11 | 12 | #[derive(Debug, Clone, Copy)] 13 | pub enum Mode { 14 | View, 15 | Edit, 16 | } 17 | 18 | #[derive(Debug, Clone)] 19 | pub struct SaleItem { 20 | pub id: usize, 21 | pub name: String, 22 | price: Option, 23 | quantity: Option, 24 | pub tax_group: TaxGroup, 25 | } 26 | 27 | impl Default for SaleItem { 28 | fn default() -> Self { 29 | static NEXT_ID: AtomicUsize = AtomicUsize::new(0); 30 | 31 | Self { 32 | id: NEXT_ID.fetch_add(1, Ordering::Relaxed), 33 | name: String::new(), 34 | price: None, 35 | quantity: None, 36 | tax_group: TaxGroup::Food, 37 | } 38 | } 39 | } 40 | 41 | impl SaleItem { 42 | pub fn price(&self) -> f32 { 43 | self.price.unwrap_or(0.0) 44 | } 45 | pub fn quantity(&self) -> f32 { 46 | self.quantity.unwrap_or(0) as f32 47 | } 48 | pub fn price_string(&self) -> String { 49 | self.price.map_or(String::new(), |p| format!("{:.2}", p)) 50 | } 51 | pub fn quantity_string(&self) -> String { 52 | self.quantity.map_or(String::new(), |q| q.to_string()) 53 | } 54 | } 55 | 56 | #[derive(Debug, Clone)] 57 | pub struct Sale { 58 | pub items: Vec, 59 | pub service_charge_percent: Option, 60 | pub gratuity_amount: Option, 61 | pub name: String, 62 | } 63 | 64 | impl Default for Sale { 65 | fn default() -> Self { 66 | Self { 67 | items: Vec::new(), 68 | service_charge_percent: None, 69 | gratuity_amount: None, 70 | name: String::new(), 71 | } 72 | } 73 | } 74 | 75 | impl Sale { 76 | pub fn calculate_subtotal(&self) -> f32 { 77 | self.items 78 | .iter() 79 | .map(|item| item.price() * item.quantity()) 80 | .sum() 81 | } 82 | 83 | pub fn calculate_tax(&self) -> f32 { 84 | self.items 85 | .iter() 86 | .map(|item| { 87 | item.price() * item.quantity() * item.tax_group.tax_rate() 88 | }) 89 | .sum() 90 | } 91 | 92 | pub fn calculate_service_charge(&self) -> f32 { 93 | let subtotal = self.calculate_subtotal(); 94 | match self.service_charge_percent { 95 | Some(percent) => subtotal * (percent / 100.0), 96 | None => 0.0, 97 | } 98 | } 99 | 100 | pub fn calculate_total(&self) -> f32 { 101 | let subtotal = self.calculate_subtotal(); 102 | let tax = self.calculate_tax(); 103 | let service_charge = self.calculate_service_charge(); 104 | let gratuity = self.gratuity_amount.unwrap_or(0.0); 105 | 106 | subtotal + tax + service_charge + gratuity 107 | } 108 | } 109 | 110 | #[derive(Debug, Clone)] 111 | pub enum Message { 112 | Show(show::Message), 113 | Edit(edit::Message), 114 | } 115 | 116 | #[derive(Debug, Clone)] 117 | pub enum Instruction { 118 | Back, 119 | Save, 120 | StartEdit, 121 | Cancel, 122 | } 123 | 124 | pub fn update( 125 | sale: &mut Sale, 126 | message: Message, 127 | ) -> Action { 128 | match message { 129 | Message::Show(msg) => match msg { 130 | show::Message::Back => Action::instruction(Instruction::Back), 131 | show::Message::StartEdit => { 132 | Action::instruction(Instruction::StartEdit) 133 | .with_task(focus_next()) 134 | } 135 | }, 136 | Message::Edit(msg) => match msg { 137 | edit::Message::Cancel => Action::instruction(Instruction::Cancel), 138 | edit::Message::Save => Action::instruction(Instruction::Save), 139 | edit::Message::NameInput(name) => { 140 | sale.name = name; 141 | Action::none() 142 | } 143 | edit::Message::NameSubmit => { 144 | if sale.items.is_empty() { 145 | sale.items.push(SaleItem::default()); 146 | } 147 | Action::task(focus_next()) 148 | } 149 | edit::Message::AddItem => { 150 | sale.items.push(SaleItem::default()); 151 | Action::none() 152 | } 153 | edit::Message::RemoveItem(id) => { 154 | sale.items.retain(|item| item.id != id); 155 | Action::none() 156 | } 157 | edit::Message::UpdateItem(id, update) => { 158 | if let Some(item) = sale.items.iter_mut().find(|i| i.id == id) { 159 | match update { 160 | edit::Field::Name(name) => item.name = name, 161 | edit::Field::Price(price) => { 162 | item.price = if price.is_empty() { 163 | None 164 | } else { 165 | price.parse().ok() 166 | }; 167 | } 168 | edit::Field::Quantity(qty) => { 169 | item.quantity = if qty.is_empty() { 170 | None 171 | } else { 172 | qty.parse().ok() 173 | }; 174 | } 175 | edit::Field::TaxGroup(group) => item.tax_group = group, 176 | } 177 | } 178 | Action::none() 179 | } 180 | edit::Message::SubmitItem(id) => { 181 | // try to move to the next 'field' in this list. if all items 182 | // are filled out, add a new item and move to it instead 183 | if let Some(item) = sale.items.iter().find(|i| i.id == id) { 184 | return if item.name.is_empty() { 185 | Action::task(text_input::focus(edit::form_id( 186 | "name", id, 187 | ))) 188 | } else if item.quantity.is_none() { 189 | Action::task(text_input::focus(edit::form_id( 190 | "quantity", id, 191 | ))) 192 | } else if item.price.is_none() { 193 | Action::task(text_input::focus(edit::form_id( 194 | "price", id, 195 | ))) 196 | } else { 197 | sale.items.push(SaleItem::default()); 198 | Action::task(text_input::focus(edit::form_id( 199 | "name", 200 | id + 1, 201 | ))) 202 | }; 203 | } else { 204 | Action::none() 205 | } 206 | } 207 | edit::Message::UpdateServiceCharge(val) => { 208 | sale.service_charge_percent = Some(val); 209 | Action::none() 210 | } 211 | edit::Message::UpdateGratuity(val) => { 212 | sale.gratuity_amount = Some(val); 213 | Action::none() 214 | } 215 | }, 216 | } 217 | } 218 | 219 | pub fn view(sale: &Sale, mode: Mode) -> Element { 220 | match mode { 221 | Mode::View => show::view(sale).map(Message::Show), 222 | Mode::Edit => edit::view(sale).map(Message::Edit), 223 | } 224 | } 225 | 226 | pub fn handle_hotkey( 227 | _: &Sale, 228 | mode: Mode, 229 | hotkey: Hotkey, 230 | ) -> Action { 231 | match mode { 232 | Mode::View => show::handle_hotkey(hotkey).map(Message::Show), 233 | Mode::Edit => edit::handle_hotkey(hotkey).map(Message::Edit), 234 | } 235 | } 236 | -------------------------------------------------------------------------------- /src/sale/edit.rs: -------------------------------------------------------------------------------- 1 | //! Edit new and existing sales 2 | use iced::widget::{ 3 | button, column, container, focus_next, focus_previous, horizontal_space, 4 | pick_list, row, scrollable, text, text_input, 5 | }; 6 | use iced::Alignment::Center; 7 | use iced::{Alignment, Element, Fill}; 8 | 9 | use super::{Action, Instruction, Sale, TaxGroup}; 10 | use crate::Hotkey; 11 | 12 | #[derive(Debug, Clone)] 13 | pub enum Message { 14 | NameInput(String), 15 | NameSubmit, 16 | AddItem, 17 | RemoveItem(usize), 18 | UpdateItem(usize, Field), 19 | SubmitItem(usize), 20 | UpdateServiceCharge(f32), 21 | UpdateGratuity(f32), 22 | Save, 23 | Cancel, 24 | } 25 | 26 | #[derive(Debug, Clone)] 27 | pub enum Field { 28 | Name(String), 29 | Price(String), 30 | Quantity(String), 31 | TaxGroup(TaxGroup), 32 | } 33 | 34 | pub fn view(sale: &Sale) -> Element { 35 | let header = row![ 36 | horizontal_space().width(40), 37 | text_input("Sale Name", &sale.name) 38 | .on_input(Message::NameInput) 39 | .on_submit(Message::NameSubmit) 40 | .padding(5), 41 | horizontal_space(), 42 | row![ 43 | button("Cancel") 44 | .on_press(Message::Cancel) 45 | .style(button::danger), 46 | button("Save") 47 | .on_press(Message::Save) 48 | .style(button::success), 49 | ] 50 | .spacing(10) 51 | ] 52 | .spacing(5) 53 | .align_y(Alignment::Center); 54 | 55 | let column_headers = row![ 56 | text("Item Name").width(Fill), 57 | text("Qty").align_x(Alignment::Center).width(80.0), 58 | text("Price").align_x(Alignment::End).width(100.0), 59 | text("Tax Group").width(140.0), 60 | text("Total").align_x(Alignment::End).width(100.0), 61 | horizontal_space().width(25), 62 | ] 63 | .spacing(2) 64 | .padding([0, 10]); 65 | 66 | let items_list = sale.items.iter().fold( 67 | column![column_headers].spacing(5).width(Fill), 68 | |col, item| { 69 | col.push( 70 | container( 71 | row![ 72 | text_input("Item name", &item.name) 73 | .id(form_id("name", item.id)) 74 | .on_input(|s| Message::UpdateItem( 75 | item.id, 76 | Field::Name(s) 77 | )) 78 | .on_submit(Message::SubmitItem(item.id)) 79 | .width(Fill) 80 | .padding(5), 81 | text_input("Quantity", &item.quantity_string()) 82 | .id(form_id("quantity", item.id)) 83 | .align_x(Alignment::Center) 84 | .on_input(|s| Message::UpdateItem( 85 | item.id.clone(), 86 | Field::Quantity(s) 87 | )) 88 | .on_submit(Message::SubmitItem(item.id)) 89 | .width(80.0) 90 | .padding(5), 91 | text_input("Price", &item.price_string()) 92 | .id(form_id("price", item.id)) 93 | .align_x(Alignment::End) 94 | .on_input(|s| Message::UpdateItem( 95 | item.id, 96 | Field::Price(s) 97 | )) 98 | .on_submit(Message::SubmitItem(item.id)) 99 | .width(100.0) 100 | .padding(5), 101 | pick_list( 102 | &TaxGroup::ALL[..], 103 | Some(item.tax_group), 104 | move |tax_group| { 105 | Message::UpdateItem( 106 | item.id, 107 | Field::TaxGroup(tax_group), 108 | ) 109 | } 110 | ) 111 | .width(140.0), 112 | text(format!("${:.2}", item.price() * item.quantity())) 113 | .align_x(Alignment::End) 114 | .width(100.0), 115 | button(text("×").center()) 116 | .width(25.0) 117 | .on_press(Message::RemoveItem(item.id)) 118 | .style(button::danger) 119 | ] 120 | .spacing(5) 121 | .align_y(Alignment::Center), 122 | ) 123 | .style(container::rounded_box) 124 | .padding(0), 125 | ) 126 | }, 127 | ); 128 | 129 | let totals = column![ 130 | row![ 131 | text("Subtotal").width(150.0), 132 | horizontal_space(), 133 | text(format!("${:.2}", sale.calculate_subtotal())) 134 | ], 135 | row![ 136 | text("Service Charge").width(150.0), 137 | row![ 138 | text_input( 139 | "0.0", 140 | &sale 141 | .service_charge_percent 142 | .map_or(String::new(), |p| format!("{:.1}", p)), 143 | ) 144 | .width(60.0) 145 | .padding(5) 146 | .on_input(|s| Message::UpdateServiceCharge(if s.is_empty() { 147 | 0.0 148 | } else { 149 | s.parse().ok().unwrap_or(0.0) 150 | })) 151 | .on_submit(Message::Save), 152 | text("%") 153 | ] 154 | .spacing(5), 155 | horizontal_space(), 156 | text(format!("${:.2}", sale.calculate_service_charge())) 157 | ], 158 | row![ 159 | text("Tax").width(150.0), 160 | horizontal_space(), 161 | text(format!("${:.2}", sale.calculate_tax())) 162 | ], 163 | row![ 164 | text("Gratuity").width(150.0), 165 | text_input( 166 | "0.00", 167 | &sale 168 | .gratuity_amount 169 | .map_or(String::new(), |g| format!("{:.2}", g)), 170 | ) 171 | .width(100.0) 172 | .padding(5) 173 | .on_input(|s| Message::UpdateGratuity(if s.is_empty() { 174 | 0.0 175 | } else { 176 | s.parse().ok().unwrap_or(0.0) 177 | })) 178 | .on_submit(Message::Save), 179 | horizontal_space(), 180 | text(format!("${:.2}", sale.gratuity_amount.unwrap_or(0.0))) 181 | ], 182 | row![ 183 | text("Total").width(150.0).size(16), 184 | horizontal_space(), 185 | text(format!("${:.2}", sale.calculate_total())).size(16) 186 | ] 187 | ] 188 | .spacing(2) 189 | .width(Fill); 190 | 191 | container( 192 | column![ 193 | header, 194 | container(scrollable( 195 | column![ 196 | button("+ Add Item") 197 | .on_press(Message::AddItem) 198 | .style(button::primary), 199 | items_list, 200 | ] 201 | .spacing(10) 202 | .padding(20) 203 | )) 204 | .height(Fill) 205 | .style(container::rounded_box), 206 | container(totals).padding(20).style(container::rounded_box) 207 | ] 208 | .spacing(20) 209 | .height(Fill), 210 | ) 211 | .padding(20) 212 | .into() 213 | } 214 | 215 | pub fn handle_hotkey(hotkey: Hotkey) -> Action { 216 | match hotkey { 217 | Hotkey::Tab(modifier) => { 218 | if modifier.shift() { 219 | Action::task(focus_previous()) 220 | } else { 221 | Action::task(focus_next()) 222 | } 223 | } 224 | _ => Action::none(), 225 | } 226 | } 227 | 228 | pub fn form_id(field: &str, id: usize) -> text_input::Id { 229 | text_input::Id::new(format!("{}-{}", field, id)) 230 | } 231 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | use iced::event; 2 | use iced::keyboard::key::Named; 3 | use iced::keyboard::{self, Key, Modifiers}; 4 | use iced::widget::focus_next; 5 | use iced::{Element, Size, Subscription, Task}; 6 | use std::collections::HashMap; 7 | use std::sync::atomic::{AtomicUsize, Ordering}; 8 | 9 | mod action; 10 | mod list; 11 | mod sale; 12 | mod tax; 13 | 14 | pub use action::Action; 15 | use sale::Sale; 16 | 17 | fn main() -> iced::Result { 18 | iced::application(App::title, App::update, App::view) 19 | .window_size(Size::new(800.0, 600.0)) 20 | .theme(App::theme) 21 | .antialiasing(true) 22 | .centered() 23 | .subscription(App::subscription) 24 | .run_with(App::new) 25 | } 26 | 27 | #[derive(Debug)] 28 | enum Screen { 29 | List, 30 | Sale(sale::Mode, Option), 31 | } 32 | 33 | #[derive(Debug)] 34 | enum Message { 35 | List(list::Message), 36 | Sale(Option, sale::Message), 37 | Hotkey(Hotkey), 38 | } 39 | 40 | #[derive(Debug)] 41 | enum Instruction { 42 | Sale(Option, sale::Instruction), 43 | } 44 | 45 | struct App { 46 | screen: Screen, 47 | sales: HashMap, 48 | draft: (Option, sale::Sale), 49 | next_sale_id: AtomicUsize, 50 | } 51 | 52 | impl App { 53 | fn theme(&self) -> iced::Theme { 54 | iced::Theme::Light 55 | } 56 | 57 | fn title(&self) -> String { 58 | match self.screen { 59 | Screen::List => "iced Receipts".to_string(), 60 | Screen::Sale(mode, id) => { 61 | let sale_name = if self.draft.0 == id { 62 | self.draft.1.name.clone() 63 | } else { 64 | self.sales[&id.unwrap()].name.clone() 65 | }; 66 | 67 | let sale_name = format!( 68 | "{} {}", 69 | if sale_name.is_empty() { 70 | "Untitled sale" 71 | } else { 72 | &sale_name 73 | }, 74 | id.map_or("".to_string(), |id| format!("(#{id})")) 75 | ); 76 | 77 | match mode { 78 | sale::Mode::View => { 79 | format!("iced Receipts • {}", sale_name) 80 | } 81 | sale::Mode::Edit => { 82 | format!("iced Receipts • {} • Edit", sale_name) 83 | } 84 | } 85 | } 86 | } 87 | } 88 | 89 | fn new() -> (Self, Task) { 90 | let initial_id = 0; 91 | ( 92 | Self { 93 | screen: Screen::List, 94 | sales: HashMap::new(), 95 | draft: (None, Sale::default()), 96 | next_sale_id: AtomicUsize::new(initial_id + 1), 97 | }, 98 | Task::none(), 99 | ) 100 | } 101 | 102 | fn update(&mut self, message: Message) -> Task { 103 | match message { 104 | Message::List(list::Message::NewSale) => { 105 | self.draft = (None, Sale::default()); 106 | self.screen = Screen::Sale(sale::Mode::Edit, None); 107 | return focus_next(); 108 | } 109 | Message::List(list::Message::SelectSale(id)) => { 110 | self.screen = Screen::Sale(sale::Mode::View, Some(id)); 111 | } 112 | Message::Hotkey(hotkey) => match self.screen { 113 | Screen::List => {} 114 | Screen::Sale(mode, sale_id) => { 115 | let sale = if self.draft.0 == sale_id { 116 | &mut self.draft.1 117 | } else { 118 | self.sales 119 | .get_mut(&sale_id.unwrap()) 120 | .expect("Sale should exist") 121 | }; 122 | 123 | let action = sale::handle_hotkey(sale, mode, hotkey) 124 | .map_instruction(move |o| Instruction::Sale(sale_id, o)) 125 | .map(move |m| Message::Sale(sale_id, m)); 126 | 127 | let instruction_task = 128 | if let Some(instruction) = action.instruction { 129 | self.perform(instruction) 130 | } else { 131 | Task::none() 132 | }; 133 | 134 | return instruction_task.chain(action.task); 135 | } 136 | }, 137 | Message::Sale(sale_id, msg) => { 138 | let sale = if self.draft.0 == sale_id { 139 | &mut self.draft.1 140 | } else { 141 | self.sales 142 | .get_mut(&sale_id.unwrap()) 143 | .expect("Sale should exist") 144 | }; 145 | 146 | let action = sale::update(sale, msg) 147 | .map_instruction(move |o| Instruction::Sale(sale_id, o)) 148 | .map(move |m| Message::Sale(sale_id, m)); 149 | 150 | let instruction_task = 151 | if let Some(instruction) = action.instruction { 152 | self.perform(instruction) 153 | } else { 154 | Task::none() 155 | }; 156 | 157 | return instruction_task.chain(action.task); 158 | } 159 | } 160 | Task::none() 161 | } 162 | 163 | fn view(&self) -> Element { 164 | match &self.screen { 165 | Screen::List => list::view(&self.sales).map(Message::List), 166 | Screen::Sale(mode, id) => { 167 | let sale = if self.draft.0 == *id { 168 | &self.draft.1 169 | } else { 170 | &self.sales[&id.unwrap()] 171 | }; 172 | sale::view(sale, *mode).map(|msg| Message::Sale(*id, msg)) 173 | } 174 | } 175 | } 176 | 177 | fn perform(&mut self, instruction: Instruction) -> Task { 178 | match instruction { 179 | Instruction::Sale(sale_id, instruction) => match instruction { 180 | sale::Instruction::Back => match self.screen { 181 | Screen::List => {} 182 | Screen::Sale(mode, _) => match mode { 183 | sale::Mode::Edit => { 184 | self.screen = 185 | Screen::Sale(sale::Mode::View, sale_id) 186 | } 187 | sale::Mode::View => self.screen = Screen::List, 188 | }, 189 | }, 190 | sale::Instruction::Save => { 191 | let final_id = match self.draft.0 { 192 | Some(id) => { 193 | // Editing existing sale 194 | self.sales.insert(id, self.draft.1.clone()); 195 | id 196 | } 197 | None => { 198 | // Creating new sale 199 | let new_id = self 200 | .next_sale_id 201 | .fetch_add(1, Ordering::SeqCst); 202 | self.sales.insert( 203 | new_id, 204 | std::mem::take(&mut self.draft.1), 205 | ); 206 | self.draft.1 = Sale::default(); 207 | new_id 208 | } 209 | }; 210 | self.screen = 211 | Screen::Sale(sale::Mode::View, Some(final_id)); 212 | } 213 | sale::Instruction::StartEdit => { 214 | if let Some(id) = sale_id { 215 | // Start editing existing sale 216 | self.draft = (Some(id), self.sales[&id].clone()); 217 | } 218 | self.screen = Screen::Sale(sale::Mode::Edit, sale_id); 219 | } 220 | sale::Instruction::Cancel => { 221 | match sale_id { 222 | Some(id) => { 223 | // Restore draft from original sale 224 | self.draft = (Some(id), self.sales[&id].clone()); 225 | } 226 | None => { 227 | // Reset to blank draft 228 | self.draft = (None, Sale::default()); 229 | } 230 | } 231 | self.screen = Screen::Sale(sale::Mode::View, sale_id); 232 | } 233 | }, 234 | } 235 | Task::none() 236 | } 237 | 238 | fn subscription(&self) -> Subscription { 239 | event::listen_with(handle_event) 240 | } 241 | } 242 | 243 | #[derive(Debug)] 244 | pub enum Hotkey { 245 | Escape, 246 | Tab(Modifiers), 247 | } 248 | 249 | fn handle_event( 250 | event: event::Event, 251 | _: event::Status, 252 | _: iced::window::Id, 253 | ) -> Option { 254 | match event { 255 | event::Event::Keyboard(keyboard::Event::KeyPressed { 256 | key, 257 | modifiers, 258 | .. 259 | }) => match key { 260 | Key::Named(Named::Escape) => Some(Message::Hotkey(Hotkey::Escape)), 261 | Key::Named(Named::Tab) => { 262 | Some(Message::Hotkey(Hotkey::Tab(modifiers))) 263 | } 264 | _ => None, 265 | }, 266 | _ => None, 267 | } 268 | } 269 | -------------------------------------------------------------------------------- /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.29" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "ec3672c180e71eeaaac3a541fbbc5f5ad4def8b747c595ad30d674e43049f7b0" 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 = "adler2" 23 | version = "2.0.0" 24 | source = "registry+https://github.com/rust-lang/crates.io-index" 25 | checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" 26 | 27 | [[package]] 28 | name = "ahash" 29 | version = "0.7.8" 30 | source = "registry+https://github.com/rust-lang/crates.io-index" 31 | checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" 32 | dependencies = [ 33 | "getrandom", 34 | "once_cell", 35 | "version_check", 36 | ] 37 | 38 | [[package]] 39 | name = "ahash" 40 | version = "0.8.11" 41 | source = "registry+https://github.com/rust-lang/crates.io-index" 42 | checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" 43 | dependencies = [ 44 | "cfg-if", 45 | "getrandom", 46 | "once_cell", 47 | "version_check", 48 | "zerocopy", 49 | ] 50 | 51 | [[package]] 52 | name = "allocator-api2" 53 | version = "0.2.21" 54 | source = "registry+https://github.com/rust-lang/crates.io-index" 55 | checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" 56 | 57 | [[package]] 58 | name = "android-activity" 59 | version = "0.6.0" 60 | source = "registry+https://github.com/rust-lang/crates.io-index" 61 | checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" 62 | dependencies = [ 63 | "android-properties", 64 | "bitflags 2.8.0", 65 | "cc", 66 | "cesu8", 67 | "jni", 68 | "jni-sys", 69 | "libc", 70 | "log", 71 | "ndk", 72 | "ndk-context", 73 | "ndk-sys 0.6.0+11769913", 74 | "num_enum", 75 | "thiserror", 76 | ] 77 | 78 | [[package]] 79 | name = "android-properties" 80 | version = "0.2.2" 81 | source = "registry+https://github.com/rust-lang/crates.io-index" 82 | checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" 83 | 84 | [[package]] 85 | name = "android_system_properties" 86 | version = "0.1.5" 87 | source = "registry+https://github.com/rust-lang/crates.io-index" 88 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 89 | dependencies = [ 90 | "libc", 91 | ] 92 | 93 | [[package]] 94 | name = "approx" 95 | version = "0.5.1" 96 | source = "registry+https://github.com/rust-lang/crates.io-index" 97 | checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" 98 | dependencies = [ 99 | "num-traits", 100 | ] 101 | 102 | [[package]] 103 | name = "arrayref" 104 | version = "0.3.9" 105 | source = "registry+https://github.com/rust-lang/crates.io-index" 106 | checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" 107 | 108 | [[package]] 109 | name = "arrayvec" 110 | version = "0.7.6" 111 | source = "registry+https://github.com/rust-lang/crates.io-index" 112 | checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" 113 | 114 | [[package]] 115 | name = "as-raw-xcb-connection" 116 | version = "1.0.1" 117 | source = "registry+https://github.com/rust-lang/crates.io-index" 118 | checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" 119 | 120 | [[package]] 121 | name = "ash" 122 | version = "0.37.3+1.3.251" 123 | source = "registry+https://github.com/rust-lang/crates.io-index" 124 | checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" 125 | dependencies = [ 126 | "libloading 0.7.4", 127 | ] 128 | 129 | [[package]] 130 | name = "async-broadcast" 131 | version = "0.7.2" 132 | source = "registry+https://github.com/rust-lang/crates.io-index" 133 | checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" 134 | dependencies = [ 135 | "event-listener", 136 | "event-listener-strategy", 137 | "futures-core", 138 | "pin-project-lite", 139 | ] 140 | 141 | [[package]] 142 | name = "async-channel" 143 | version = "2.3.1" 144 | source = "registry+https://github.com/rust-lang/crates.io-index" 145 | checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" 146 | dependencies = [ 147 | "concurrent-queue", 148 | "event-listener-strategy", 149 | "futures-core", 150 | "pin-project-lite", 151 | ] 152 | 153 | [[package]] 154 | name = "async-executor" 155 | version = "1.13.1" 156 | source = "registry+https://github.com/rust-lang/crates.io-index" 157 | checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" 158 | dependencies = [ 159 | "async-task", 160 | "concurrent-queue", 161 | "fastrand", 162 | "futures-lite", 163 | "slab", 164 | ] 165 | 166 | [[package]] 167 | name = "async-fs" 168 | version = "2.1.2" 169 | source = "registry+https://github.com/rust-lang/crates.io-index" 170 | checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" 171 | dependencies = [ 172 | "async-lock", 173 | "blocking", 174 | "futures-lite", 175 | ] 176 | 177 | [[package]] 178 | name = "async-io" 179 | version = "2.4.0" 180 | source = "registry+https://github.com/rust-lang/crates.io-index" 181 | checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" 182 | dependencies = [ 183 | "async-lock", 184 | "cfg-if", 185 | "concurrent-queue", 186 | "futures-io", 187 | "futures-lite", 188 | "parking", 189 | "polling", 190 | "rustix", 191 | "slab", 192 | "tracing", 193 | "windows-sys 0.59.0", 194 | ] 195 | 196 | [[package]] 197 | name = "async-lock" 198 | version = "3.4.0" 199 | source = "registry+https://github.com/rust-lang/crates.io-index" 200 | checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" 201 | dependencies = [ 202 | "event-listener", 203 | "event-listener-strategy", 204 | "pin-project-lite", 205 | ] 206 | 207 | [[package]] 208 | name = "async-process" 209 | version = "2.3.0" 210 | source = "registry+https://github.com/rust-lang/crates.io-index" 211 | checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" 212 | dependencies = [ 213 | "async-channel", 214 | "async-io", 215 | "async-lock", 216 | "async-signal", 217 | "async-task", 218 | "blocking", 219 | "cfg-if", 220 | "event-listener", 221 | "futures-lite", 222 | "rustix", 223 | "tracing", 224 | ] 225 | 226 | [[package]] 227 | name = "async-recursion" 228 | version = "1.1.1" 229 | source = "registry+https://github.com/rust-lang/crates.io-index" 230 | checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" 231 | dependencies = [ 232 | "proc-macro2", 233 | "quote", 234 | "syn 2.0.96", 235 | ] 236 | 237 | [[package]] 238 | name = "async-signal" 239 | version = "0.2.10" 240 | source = "registry+https://github.com/rust-lang/crates.io-index" 241 | checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" 242 | dependencies = [ 243 | "async-io", 244 | "async-lock", 245 | "atomic-waker", 246 | "cfg-if", 247 | "futures-core", 248 | "futures-io", 249 | "rustix", 250 | "signal-hook-registry", 251 | "slab", 252 | "windows-sys 0.59.0", 253 | ] 254 | 255 | [[package]] 256 | name = "async-task" 257 | version = "4.7.1" 258 | source = "registry+https://github.com/rust-lang/crates.io-index" 259 | checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" 260 | 261 | [[package]] 262 | name = "async-trait" 263 | version = "0.1.85" 264 | source = "registry+https://github.com/rust-lang/crates.io-index" 265 | checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" 266 | dependencies = [ 267 | "proc-macro2", 268 | "quote", 269 | "syn 2.0.96", 270 | ] 271 | 272 | [[package]] 273 | name = "atomic-waker" 274 | version = "1.1.2" 275 | source = "registry+https://github.com/rust-lang/crates.io-index" 276 | checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 277 | 278 | [[package]] 279 | name = "autocfg" 280 | version = "1.4.0" 281 | source = "registry+https://github.com/rust-lang/crates.io-index" 282 | checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" 283 | 284 | [[package]] 285 | name = "bit-set" 286 | version = "0.5.3" 287 | source = "registry+https://github.com/rust-lang/crates.io-index" 288 | checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" 289 | dependencies = [ 290 | "bit-vec", 291 | ] 292 | 293 | [[package]] 294 | name = "bit-vec" 295 | version = "0.6.3" 296 | source = "registry+https://github.com/rust-lang/crates.io-index" 297 | checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" 298 | 299 | [[package]] 300 | name = "bitflags" 301 | version = "1.3.2" 302 | source = "registry+https://github.com/rust-lang/crates.io-index" 303 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 304 | 305 | [[package]] 306 | name = "bitflags" 307 | version = "2.8.0" 308 | source = "registry+https://github.com/rust-lang/crates.io-index" 309 | checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" 310 | 311 | [[package]] 312 | name = "block" 313 | version = "0.1.6" 314 | source = "registry+https://github.com/rust-lang/crates.io-index" 315 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 316 | 317 | [[package]] 318 | name = "block-buffer" 319 | version = "0.10.4" 320 | source = "registry+https://github.com/rust-lang/crates.io-index" 321 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 322 | dependencies = [ 323 | "generic-array", 324 | ] 325 | 326 | [[package]] 327 | name = "block2" 328 | version = "0.5.1" 329 | source = "registry+https://github.com/rust-lang/crates.io-index" 330 | checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" 331 | dependencies = [ 332 | "objc2", 333 | ] 334 | 335 | [[package]] 336 | name = "blocking" 337 | version = "1.6.1" 338 | source = "registry+https://github.com/rust-lang/crates.io-index" 339 | checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" 340 | dependencies = [ 341 | "async-channel", 342 | "async-task", 343 | "futures-io", 344 | "futures-lite", 345 | "piper", 346 | ] 347 | 348 | [[package]] 349 | name = "bumpalo" 350 | version = "3.16.0" 351 | source = "registry+https://github.com/rust-lang/crates.io-index" 352 | checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" 353 | 354 | [[package]] 355 | name = "by_address" 356 | version = "1.2.1" 357 | source = "registry+https://github.com/rust-lang/crates.io-index" 358 | checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" 359 | 360 | [[package]] 361 | name = "bytemuck" 362 | version = "1.21.0" 363 | source = "registry+https://github.com/rust-lang/crates.io-index" 364 | checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" 365 | dependencies = [ 366 | "bytemuck_derive", 367 | ] 368 | 369 | [[package]] 370 | name = "bytemuck_derive" 371 | version = "1.8.1" 372 | source = "registry+https://github.com/rust-lang/crates.io-index" 373 | checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" 374 | dependencies = [ 375 | "proc-macro2", 376 | "quote", 377 | "syn 2.0.96", 378 | ] 379 | 380 | [[package]] 381 | name = "byteorder" 382 | version = "1.5.0" 383 | source = "registry+https://github.com/rust-lang/crates.io-index" 384 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 385 | 386 | [[package]] 387 | name = "bytes" 388 | version = "1.9.0" 389 | source = "registry+https://github.com/rust-lang/crates.io-index" 390 | checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" 391 | 392 | [[package]] 393 | name = "calloop" 394 | version = "0.13.0" 395 | source = "registry+https://github.com/rust-lang/crates.io-index" 396 | checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" 397 | dependencies = [ 398 | "bitflags 2.8.0", 399 | "log", 400 | "polling", 401 | "rustix", 402 | "slab", 403 | "thiserror", 404 | ] 405 | 406 | [[package]] 407 | name = "calloop-wayland-source" 408 | version = "0.3.0" 409 | source = "registry+https://github.com/rust-lang/crates.io-index" 410 | checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" 411 | dependencies = [ 412 | "calloop", 413 | "rustix", 414 | "wayland-backend", 415 | "wayland-client", 416 | ] 417 | 418 | [[package]] 419 | name = "cc" 420 | version = "1.2.9" 421 | source = "registry+https://github.com/rust-lang/crates.io-index" 422 | checksum = "c8293772165d9345bdaaa39b45b2109591e63fe5e6fbc23c6ff930a048aa310b" 423 | dependencies = [ 424 | "jobserver", 425 | "libc", 426 | "shlex", 427 | ] 428 | 429 | [[package]] 430 | name = "cesu8" 431 | version = "1.1.0" 432 | source = "registry+https://github.com/rust-lang/crates.io-index" 433 | checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 434 | 435 | [[package]] 436 | name = "cfg-if" 437 | version = "1.0.0" 438 | source = "registry+https://github.com/rust-lang/crates.io-index" 439 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 440 | 441 | [[package]] 442 | name = "cfg_aliases" 443 | version = "0.1.1" 444 | source = "registry+https://github.com/rust-lang/crates.io-index" 445 | checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" 446 | 447 | [[package]] 448 | name = "cfg_aliases" 449 | version = "0.2.1" 450 | source = "registry+https://github.com/rust-lang/crates.io-index" 451 | checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 452 | 453 | [[package]] 454 | name = "clipboard-win" 455 | version = "5.4.0" 456 | source = "registry+https://github.com/rust-lang/crates.io-index" 457 | checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" 458 | dependencies = [ 459 | "error-code", 460 | ] 461 | 462 | [[package]] 463 | name = "clipboard_macos" 464 | version = "0.1.1" 465 | source = "registry+https://github.com/rust-lang/crates.io-index" 466 | checksum = "9b7f4aaa047ba3c3630b080bb9860894732ff23e2aee290a418909aa6d5df38f" 467 | dependencies = [ 468 | "objc2", 469 | "objc2-app-kit", 470 | "objc2-foundation", 471 | ] 472 | 473 | [[package]] 474 | name = "clipboard_wayland" 475 | version = "0.2.2" 476 | source = "registry+https://github.com/rust-lang/crates.io-index" 477 | checksum = "003f886bc4e2987729d10c1db3424e7f80809f3fc22dbc16c685738887cb37b8" 478 | dependencies = [ 479 | "smithay-clipboard", 480 | ] 481 | 482 | [[package]] 483 | name = "clipboard_x11" 484 | version = "0.4.2" 485 | source = "registry+https://github.com/rust-lang/crates.io-index" 486 | checksum = "4274ea815e013e0f9f04a2633423e14194e408a0576c943ce3d14ca56c50031c" 487 | dependencies = [ 488 | "thiserror", 489 | "x11rb", 490 | ] 491 | 492 | [[package]] 493 | name = "codespan-reporting" 494 | version = "0.11.1" 495 | source = "registry+https://github.com/rust-lang/crates.io-index" 496 | checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" 497 | dependencies = [ 498 | "termcolor", 499 | "unicode-width", 500 | ] 501 | 502 | [[package]] 503 | name = "com" 504 | version = "0.6.0" 505 | source = "registry+https://github.com/rust-lang/crates.io-index" 506 | checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" 507 | dependencies = [ 508 | "com_macros", 509 | ] 510 | 511 | [[package]] 512 | name = "com_macros" 513 | version = "0.6.0" 514 | source = "registry+https://github.com/rust-lang/crates.io-index" 515 | checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" 516 | dependencies = [ 517 | "com_macros_support", 518 | "proc-macro2", 519 | "syn 1.0.109", 520 | ] 521 | 522 | [[package]] 523 | name = "com_macros_support" 524 | version = "0.6.0" 525 | source = "registry+https://github.com/rust-lang/crates.io-index" 526 | checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" 527 | dependencies = [ 528 | "proc-macro2", 529 | "quote", 530 | "syn 1.0.109", 531 | ] 532 | 533 | [[package]] 534 | name = "combine" 535 | version = "4.6.7" 536 | source = "registry+https://github.com/rust-lang/crates.io-index" 537 | checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" 538 | dependencies = [ 539 | "bytes", 540 | "memchr", 541 | ] 542 | 543 | [[package]] 544 | name = "concurrent-queue" 545 | version = "2.5.0" 546 | source = "registry+https://github.com/rust-lang/crates.io-index" 547 | checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" 548 | dependencies = [ 549 | "crossbeam-utils", 550 | ] 551 | 552 | [[package]] 553 | name = "core-foundation" 554 | version = "0.9.4" 555 | source = "registry+https://github.com/rust-lang/crates.io-index" 556 | checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 557 | dependencies = [ 558 | "core-foundation-sys", 559 | "libc", 560 | ] 561 | 562 | [[package]] 563 | name = "core-foundation" 564 | version = "0.10.0" 565 | source = "registry+https://github.com/rust-lang/crates.io-index" 566 | checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" 567 | dependencies = [ 568 | "core-foundation-sys", 569 | "libc", 570 | ] 571 | 572 | [[package]] 573 | name = "core-foundation-sys" 574 | version = "0.8.7" 575 | source = "registry+https://github.com/rust-lang/crates.io-index" 576 | checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 577 | 578 | [[package]] 579 | name = "core-graphics" 580 | version = "0.23.2" 581 | source = "registry+https://github.com/rust-lang/crates.io-index" 582 | checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" 583 | dependencies = [ 584 | "bitflags 1.3.2", 585 | "core-foundation 0.9.4", 586 | "core-graphics-types 0.1.3", 587 | "foreign-types", 588 | "libc", 589 | ] 590 | 591 | [[package]] 592 | name = "core-graphics" 593 | version = "0.24.0" 594 | source = "registry+https://github.com/rust-lang/crates.io-index" 595 | checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" 596 | dependencies = [ 597 | "bitflags 2.8.0", 598 | "core-foundation 0.10.0", 599 | "core-graphics-types 0.2.0", 600 | "foreign-types", 601 | "libc", 602 | ] 603 | 604 | [[package]] 605 | name = "core-graphics-types" 606 | version = "0.1.3" 607 | source = "registry+https://github.com/rust-lang/crates.io-index" 608 | checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" 609 | dependencies = [ 610 | "bitflags 1.3.2", 611 | "core-foundation 0.9.4", 612 | "libc", 613 | ] 614 | 615 | [[package]] 616 | name = "core-graphics-types" 617 | version = "0.2.0" 618 | source = "registry+https://github.com/rust-lang/crates.io-index" 619 | checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" 620 | dependencies = [ 621 | "bitflags 2.8.0", 622 | "core-foundation 0.10.0", 623 | "libc", 624 | ] 625 | 626 | [[package]] 627 | name = "cosmic-text" 628 | version = "0.12.1" 629 | source = "registry+https://github.com/rust-lang/crates.io-index" 630 | checksum = "59fd57d82eb4bfe7ffa9b1cec0c05e2fd378155b47f255a67983cb4afe0e80c2" 631 | dependencies = [ 632 | "bitflags 2.8.0", 633 | "fontdb", 634 | "log", 635 | "rangemap", 636 | "rayon", 637 | "rustc-hash 1.1.0", 638 | "rustybuzz", 639 | "self_cell", 640 | "swash", 641 | "sys-locale", 642 | "ttf-parser 0.21.1", 643 | "unicode-bidi", 644 | "unicode-linebreak", 645 | "unicode-script", 646 | "unicode-segmentation", 647 | ] 648 | 649 | [[package]] 650 | name = "cpufeatures" 651 | version = "0.2.16" 652 | source = "registry+https://github.com/rust-lang/crates.io-index" 653 | checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" 654 | dependencies = [ 655 | "libc", 656 | ] 657 | 658 | [[package]] 659 | name = "crc32fast" 660 | version = "1.4.2" 661 | source = "registry+https://github.com/rust-lang/crates.io-index" 662 | checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" 663 | dependencies = [ 664 | "cfg-if", 665 | ] 666 | 667 | [[package]] 668 | name = "crossbeam-deque" 669 | version = "0.8.6" 670 | source = "registry+https://github.com/rust-lang/crates.io-index" 671 | checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" 672 | dependencies = [ 673 | "crossbeam-epoch", 674 | "crossbeam-utils", 675 | ] 676 | 677 | [[package]] 678 | name = "crossbeam-epoch" 679 | version = "0.9.18" 680 | source = "registry+https://github.com/rust-lang/crates.io-index" 681 | checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 682 | dependencies = [ 683 | "crossbeam-utils", 684 | ] 685 | 686 | [[package]] 687 | name = "crossbeam-utils" 688 | version = "0.8.21" 689 | source = "registry+https://github.com/rust-lang/crates.io-index" 690 | checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 691 | 692 | [[package]] 693 | name = "crunchy" 694 | version = "0.2.2" 695 | source = "registry+https://github.com/rust-lang/crates.io-index" 696 | checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" 697 | 698 | [[package]] 699 | name = "crypto-common" 700 | version = "0.1.6" 701 | source = "registry+https://github.com/rust-lang/crates.io-index" 702 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 703 | dependencies = [ 704 | "generic-array", 705 | "typenum", 706 | ] 707 | 708 | [[package]] 709 | name = "ctor-lite" 710 | version = "0.1.0" 711 | source = "registry+https://github.com/rust-lang/crates.io-index" 712 | checksum = "1f791803201ab277ace03903de1594460708d2d54df6053f2d9e82f592b19e3b" 713 | 714 | [[package]] 715 | name = "cursor-icon" 716 | version = "1.1.0" 717 | source = "registry+https://github.com/rust-lang/crates.io-index" 718 | checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" 719 | 720 | [[package]] 721 | name = "d3d12" 722 | version = "0.19.0" 723 | source = "registry+https://github.com/rust-lang/crates.io-index" 724 | checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307" 725 | dependencies = [ 726 | "bitflags 2.8.0", 727 | "libloading 0.8.6", 728 | "winapi", 729 | ] 730 | 731 | [[package]] 732 | name = "dark-light" 733 | version = "1.1.1" 734 | source = "registry+https://github.com/rust-lang/crates.io-index" 735 | checksum = "2a76fa97167fa740dcdbfe18e8895601e1bc36525f09b044e00916e717c03a3c" 736 | dependencies = [ 737 | "dconf_rs", 738 | "detect-desktop-environment", 739 | "dirs", 740 | "objc", 741 | "rust-ini", 742 | "web-sys", 743 | "winreg", 744 | "zbus", 745 | ] 746 | 747 | [[package]] 748 | name = "dconf_rs" 749 | version = "0.3.0" 750 | source = "registry+https://github.com/rust-lang/crates.io-index" 751 | checksum = "7046468a81e6a002061c01e6a7c83139daf91b11c30e66795b13217c2d885c8b" 752 | 753 | [[package]] 754 | name = "detect-desktop-environment" 755 | version = "0.2.0" 756 | source = "registry+https://github.com/rust-lang/crates.io-index" 757 | checksum = "21d8ad60dd5b13a4ee6bd8fa2d5d88965c597c67bce32b5fc49c94f55cb50810" 758 | 759 | [[package]] 760 | name = "digest" 761 | version = "0.10.7" 762 | source = "registry+https://github.com/rust-lang/crates.io-index" 763 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 764 | dependencies = [ 765 | "block-buffer", 766 | "crypto-common", 767 | ] 768 | 769 | [[package]] 770 | name = "dirs" 771 | version = "4.0.0" 772 | source = "registry+https://github.com/rust-lang/crates.io-index" 773 | checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" 774 | dependencies = [ 775 | "dirs-sys", 776 | ] 777 | 778 | [[package]] 779 | name = "dirs-sys" 780 | version = "0.3.7" 781 | source = "registry+https://github.com/rust-lang/crates.io-index" 782 | checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" 783 | dependencies = [ 784 | "libc", 785 | "redox_users", 786 | "winapi", 787 | ] 788 | 789 | [[package]] 790 | name = "dispatch" 791 | version = "0.2.0" 792 | source = "registry+https://github.com/rust-lang/crates.io-index" 793 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 794 | 795 | [[package]] 796 | name = "dlib" 797 | version = "0.5.2" 798 | source = "registry+https://github.com/rust-lang/crates.io-index" 799 | checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" 800 | dependencies = [ 801 | "libloading 0.8.6", 802 | ] 803 | 804 | [[package]] 805 | name = "dlv-list" 806 | version = "0.3.0" 807 | source = "registry+https://github.com/rust-lang/crates.io-index" 808 | checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257" 809 | 810 | [[package]] 811 | name = "downcast-rs" 812 | version = "1.2.1" 813 | source = "registry+https://github.com/rust-lang/crates.io-index" 814 | checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" 815 | 816 | [[package]] 817 | name = "dpi" 818 | version = "0.1.1" 819 | source = "registry+https://github.com/rust-lang/crates.io-index" 820 | checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" 821 | 822 | [[package]] 823 | name = "drm" 824 | version = "0.12.0" 825 | source = "registry+https://github.com/rust-lang/crates.io-index" 826 | checksum = "98888c4bbd601524c11a7ed63f814b8825f420514f78e96f752c437ae9cbb5d1" 827 | dependencies = [ 828 | "bitflags 2.8.0", 829 | "bytemuck", 830 | "drm-ffi", 831 | "drm-fourcc", 832 | "rustix", 833 | ] 834 | 835 | [[package]] 836 | name = "drm-ffi" 837 | version = "0.8.0" 838 | source = "registry+https://github.com/rust-lang/crates.io-index" 839 | checksum = "97c98727e48b7ccb4f4aea8cfe881e5b07f702d17b7875991881b41af7278d53" 840 | dependencies = [ 841 | "drm-sys", 842 | "rustix", 843 | ] 844 | 845 | [[package]] 846 | name = "drm-fourcc" 847 | version = "2.2.0" 848 | source = "registry+https://github.com/rust-lang/crates.io-index" 849 | checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" 850 | 851 | [[package]] 852 | name = "drm-sys" 853 | version = "0.7.0" 854 | source = "registry+https://github.com/rust-lang/crates.io-index" 855 | checksum = "fd39dde40b6e196c2e8763f23d119ddb1a8714534bf7d77fa97a65b0feda3986" 856 | dependencies = [ 857 | "libc", 858 | "linux-raw-sys 0.6.5", 859 | ] 860 | 861 | [[package]] 862 | name = "either" 863 | version = "1.13.0" 864 | source = "registry+https://github.com/rust-lang/crates.io-index" 865 | checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" 866 | 867 | [[package]] 868 | name = "endi" 869 | version = "1.1.0" 870 | source = "registry+https://github.com/rust-lang/crates.io-index" 871 | checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" 872 | 873 | [[package]] 874 | name = "enumflags2" 875 | version = "0.7.10" 876 | source = "registry+https://github.com/rust-lang/crates.io-index" 877 | checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" 878 | dependencies = [ 879 | "enumflags2_derive", 880 | "serde", 881 | ] 882 | 883 | [[package]] 884 | name = "enumflags2_derive" 885 | version = "0.7.10" 886 | source = "registry+https://github.com/rust-lang/crates.io-index" 887 | checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" 888 | dependencies = [ 889 | "proc-macro2", 890 | "quote", 891 | "syn 2.0.96", 892 | ] 893 | 894 | [[package]] 895 | name = "equivalent" 896 | version = "1.0.1" 897 | source = "registry+https://github.com/rust-lang/crates.io-index" 898 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 899 | 900 | [[package]] 901 | name = "errno" 902 | version = "0.3.10" 903 | source = "registry+https://github.com/rust-lang/crates.io-index" 904 | checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" 905 | dependencies = [ 906 | "libc", 907 | "windows-sys 0.59.0", 908 | ] 909 | 910 | [[package]] 911 | name = "error-code" 912 | version = "3.3.1" 913 | source = "registry+https://github.com/rust-lang/crates.io-index" 914 | checksum = "a5d9305ccc6942a704f4335694ecd3de2ea531b114ac2d51f5f843750787a92f" 915 | 916 | [[package]] 917 | name = "etagere" 918 | version = "0.2.13" 919 | source = "registry+https://github.com/rust-lang/crates.io-index" 920 | checksum = "0e2f1e3be19fb10f549be8c1bf013e8675b4066c445e36eb76d2ebb2f54ee495" 921 | dependencies = [ 922 | "euclid", 923 | "svg_fmt", 924 | ] 925 | 926 | [[package]] 927 | name = "euclid" 928 | version = "0.22.11" 929 | source = "registry+https://github.com/rust-lang/crates.io-index" 930 | checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" 931 | dependencies = [ 932 | "num-traits", 933 | ] 934 | 935 | [[package]] 936 | name = "event-listener" 937 | version = "5.4.0" 938 | source = "registry+https://github.com/rust-lang/crates.io-index" 939 | checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" 940 | dependencies = [ 941 | "concurrent-queue", 942 | "parking", 943 | "pin-project-lite", 944 | ] 945 | 946 | [[package]] 947 | name = "event-listener-strategy" 948 | version = "0.5.3" 949 | source = "registry+https://github.com/rust-lang/crates.io-index" 950 | checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" 951 | dependencies = [ 952 | "event-listener", 953 | "pin-project-lite", 954 | ] 955 | 956 | [[package]] 957 | name = "fast-srgb8" 958 | version = "1.0.0" 959 | source = "registry+https://github.com/rust-lang/crates.io-index" 960 | checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1" 961 | 962 | [[package]] 963 | name = "fastrand" 964 | version = "2.3.0" 965 | source = "registry+https://github.com/rust-lang/crates.io-index" 966 | checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 967 | 968 | [[package]] 969 | name = "fdeflate" 970 | version = "0.3.7" 971 | source = "registry+https://github.com/rust-lang/crates.io-index" 972 | checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" 973 | dependencies = [ 974 | "simd-adler32", 975 | ] 976 | 977 | [[package]] 978 | name = "flate2" 979 | version = "1.0.35" 980 | source = "registry+https://github.com/rust-lang/crates.io-index" 981 | checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" 982 | dependencies = [ 983 | "crc32fast", 984 | "miniz_oxide", 985 | ] 986 | 987 | [[package]] 988 | name = "font-types" 989 | version = "0.7.3" 990 | source = "registry+https://github.com/rust-lang/crates.io-index" 991 | checksum = "b3971f9a5ca983419cdc386941ba3b9e1feba01a0ab888adf78739feb2798492" 992 | dependencies = [ 993 | "bytemuck", 994 | ] 995 | 996 | [[package]] 997 | name = "fontconfig-parser" 998 | version = "0.5.7" 999 | source = "registry+https://github.com/rust-lang/crates.io-index" 1000 | checksum = "c1fcfcd44ca6e90c921fee9fa665d530b21ef1327a4c1a6c5250ea44b776ada7" 1001 | dependencies = [ 1002 | "roxmltree", 1003 | ] 1004 | 1005 | [[package]] 1006 | name = "fontdb" 1007 | version = "0.16.2" 1008 | source = "registry+https://github.com/rust-lang/crates.io-index" 1009 | checksum = "b0299020c3ef3f60f526a4f64ab4a3d4ce116b1acbf24cdd22da0068e5d81dc3" 1010 | dependencies = [ 1011 | "fontconfig-parser", 1012 | "log", 1013 | "memmap2", 1014 | "slotmap", 1015 | "tinyvec", 1016 | "ttf-parser 0.20.0", 1017 | ] 1018 | 1019 | [[package]] 1020 | name = "foreign-types" 1021 | version = "0.5.0" 1022 | source = "registry+https://github.com/rust-lang/crates.io-index" 1023 | checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" 1024 | dependencies = [ 1025 | "foreign-types-macros", 1026 | "foreign-types-shared", 1027 | ] 1028 | 1029 | [[package]] 1030 | name = "foreign-types-macros" 1031 | version = "0.2.3" 1032 | source = "registry+https://github.com/rust-lang/crates.io-index" 1033 | checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" 1034 | dependencies = [ 1035 | "proc-macro2", 1036 | "quote", 1037 | "syn 2.0.96", 1038 | ] 1039 | 1040 | [[package]] 1041 | name = "foreign-types-shared" 1042 | version = "0.3.1" 1043 | source = "registry+https://github.com/rust-lang/crates.io-index" 1044 | checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" 1045 | 1046 | [[package]] 1047 | name = "futures" 1048 | version = "0.3.31" 1049 | source = "registry+https://github.com/rust-lang/crates.io-index" 1050 | checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" 1051 | dependencies = [ 1052 | "futures-channel", 1053 | "futures-core", 1054 | "futures-executor", 1055 | "futures-io", 1056 | "futures-sink", 1057 | "futures-task", 1058 | "futures-util", 1059 | ] 1060 | 1061 | [[package]] 1062 | name = "futures-channel" 1063 | version = "0.3.31" 1064 | source = "registry+https://github.com/rust-lang/crates.io-index" 1065 | checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 1066 | dependencies = [ 1067 | "futures-core", 1068 | "futures-sink", 1069 | ] 1070 | 1071 | [[package]] 1072 | name = "futures-core" 1073 | version = "0.3.31" 1074 | source = "registry+https://github.com/rust-lang/crates.io-index" 1075 | checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 1076 | 1077 | [[package]] 1078 | name = "futures-executor" 1079 | version = "0.3.31" 1080 | source = "registry+https://github.com/rust-lang/crates.io-index" 1081 | checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" 1082 | dependencies = [ 1083 | "futures-core", 1084 | "futures-task", 1085 | "futures-util", 1086 | "num_cpus", 1087 | ] 1088 | 1089 | [[package]] 1090 | name = "futures-io" 1091 | version = "0.3.31" 1092 | source = "registry+https://github.com/rust-lang/crates.io-index" 1093 | checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 1094 | 1095 | [[package]] 1096 | name = "futures-lite" 1097 | version = "2.6.0" 1098 | source = "registry+https://github.com/rust-lang/crates.io-index" 1099 | checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" 1100 | dependencies = [ 1101 | "fastrand", 1102 | "futures-core", 1103 | "futures-io", 1104 | "parking", 1105 | "pin-project-lite", 1106 | ] 1107 | 1108 | [[package]] 1109 | name = "futures-macro" 1110 | version = "0.3.31" 1111 | source = "registry+https://github.com/rust-lang/crates.io-index" 1112 | checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" 1113 | dependencies = [ 1114 | "proc-macro2", 1115 | "quote", 1116 | "syn 2.0.96", 1117 | ] 1118 | 1119 | [[package]] 1120 | name = "futures-sink" 1121 | version = "0.3.31" 1122 | source = "registry+https://github.com/rust-lang/crates.io-index" 1123 | checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 1124 | 1125 | [[package]] 1126 | name = "futures-task" 1127 | version = "0.3.31" 1128 | source = "registry+https://github.com/rust-lang/crates.io-index" 1129 | checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 1130 | 1131 | [[package]] 1132 | name = "futures-util" 1133 | version = "0.3.31" 1134 | source = "registry+https://github.com/rust-lang/crates.io-index" 1135 | checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 1136 | dependencies = [ 1137 | "futures-channel", 1138 | "futures-core", 1139 | "futures-io", 1140 | "futures-macro", 1141 | "futures-sink", 1142 | "futures-task", 1143 | "memchr", 1144 | "pin-project-lite", 1145 | "pin-utils", 1146 | "slab", 1147 | ] 1148 | 1149 | [[package]] 1150 | name = "generic-array" 1151 | version = "0.14.7" 1152 | source = "registry+https://github.com/rust-lang/crates.io-index" 1153 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 1154 | dependencies = [ 1155 | "typenum", 1156 | "version_check", 1157 | ] 1158 | 1159 | [[package]] 1160 | name = "gethostname" 1161 | version = "0.4.3" 1162 | source = "registry+https://github.com/rust-lang/crates.io-index" 1163 | checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" 1164 | dependencies = [ 1165 | "libc", 1166 | "windows-targets 0.48.5", 1167 | ] 1168 | 1169 | [[package]] 1170 | name = "getrandom" 1171 | version = "0.2.15" 1172 | source = "registry+https://github.com/rust-lang/crates.io-index" 1173 | checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" 1174 | dependencies = [ 1175 | "cfg-if", 1176 | "libc", 1177 | "wasi", 1178 | ] 1179 | 1180 | [[package]] 1181 | name = "gl_generator" 1182 | version = "0.14.0" 1183 | source = "registry+https://github.com/rust-lang/crates.io-index" 1184 | checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" 1185 | dependencies = [ 1186 | "khronos_api", 1187 | "log", 1188 | "xml-rs", 1189 | ] 1190 | 1191 | [[package]] 1192 | name = "glam" 1193 | version = "0.25.0" 1194 | source = "registry+https://github.com/rust-lang/crates.io-index" 1195 | checksum = "151665d9be52f9bb40fc7966565d39666f2d1e69233571b71b87791c7e0528b3" 1196 | 1197 | [[package]] 1198 | name = "glow" 1199 | version = "0.13.1" 1200 | source = "registry+https://github.com/rust-lang/crates.io-index" 1201 | checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" 1202 | dependencies = [ 1203 | "js-sys", 1204 | "slotmap", 1205 | "wasm-bindgen", 1206 | "web-sys", 1207 | ] 1208 | 1209 | [[package]] 1210 | name = "glutin_wgl_sys" 1211 | version = "0.5.0" 1212 | source = "registry+https://github.com/rust-lang/crates.io-index" 1213 | checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" 1214 | dependencies = [ 1215 | "gl_generator", 1216 | ] 1217 | 1218 | [[package]] 1219 | name = "gpu-alloc" 1220 | version = "0.6.0" 1221 | source = "registry+https://github.com/rust-lang/crates.io-index" 1222 | checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" 1223 | dependencies = [ 1224 | "bitflags 2.8.0", 1225 | "gpu-alloc-types", 1226 | ] 1227 | 1228 | [[package]] 1229 | name = "gpu-alloc-types" 1230 | version = "0.3.0" 1231 | source = "registry+https://github.com/rust-lang/crates.io-index" 1232 | checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" 1233 | dependencies = [ 1234 | "bitflags 2.8.0", 1235 | ] 1236 | 1237 | [[package]] 1238 | name = "gpu-allocator" 1239 | version = "0.25.0" 1240 | source = "registry+https://github.com/rust-lang/crates.io-index" 1241 | checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" 1242 | dependencies = [ 1243 | "log", 1244 | "presser", 1245 | "thiserror", 1246 | "winapi", 1247 | "windows", 1248 | ] 1249 | 1250 | [[package]] 1251 | name = "gpu-descriptor" 1252 | version = "0.2.4" 1253 | source = "registry+https://github.com/rust-lang/crates.io-index" 1254 | checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" 1255 | dependencies = [ 1256 | "bitflags 2.8.0", 1257 | "gpu-descriptor-types", 1258 | "hashbrown 0.14.5", 1259 | ] 1260 | 1261 | [[package]] 1262 | name = "gpu-descriptor-types" 1263 | version = "0.1.2" 1264 | source = "registry+https://github.com/rust-lang/crates.io-index" 1265 | checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" 1266 | dependencies = [ 1267 | "bitflags 2.8.0", 1268 | ] 1269 | 1270 | [[package]] 1271 | name = "guillotiere" 1272 | version = "0.6.2" 1273 | source = "registry+https://github.com/rust-lang/crates.io-index" 1274 | checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" 1275 | dependencies = [ 1276 | "euclid", 1277 | "svg_fmt", 1278 | ] 1279 | 1280 | [[package]] 1281 | name = "half" 1282 | version = "2.4.1" 1283 | source = "registry+https://github.com/rust-lang/crates.io-index" 1284 | checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" 1285 | dependencies = [ 1286 | "cfg-if", 1287 | "crunchy", 1288 | ] 1289 | 1290 | [[package]] 1291 | name = "hashbrown" 1292 | version = "0.12.3" 1293 | source = "registry+https://github.com/rust-lang/crates.io-index" 1294 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 1295 | dependencies = [ 1296 | "ahash 0.7.8", 1297 | ] 1298 | 1299 | [[package]] 1300 | name = "hashbrown" 1301 | version = "0.14.5" 1302 | source = "registry+https://github.com/rust-lang/crates.io-index" 1303 | checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 1304 | dependencies = [ 1305 | "ahash 0.8.11", 1306 | "allocator-api2", 1307 | ] 1308 | 1309 | [[package]] 1310 | name = "hashbrown" 1311 | version = "0.15.2" 1312 | source = "registry+https://github.com/rust-lang/crates.io-index" 1313 | checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" 1314 | 1315 | [[package]] 1316 | name = "hassle-rs" 1317 | version = "0.11.0" 1318 | source = "registry+https://github.com/rust-lang/crates.io-index" 1319 | checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" 1320 | dependencies = [ 1321 | "bitflags 2.8.0", 1322 | "com", 1323 | "libc", 1324 | "libloading 0.8.6", 1325 | "thiserror", 1326 | "widestring", 1327 | "winapi", 1328 | ] 1329 | 1330 | [[package]] 1331 | name = "hermit-abi" 1332 | version = "0.3.9" 1333 | source = "registry+https://github.com/rust-lang/crates.io-index" 1334 | checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" 1335 | 1336 | [[package]] 1337 | name = "hermit-abi" 1338 | version = "0.4.0" 1339 | source = "registry+https://github.com/rust-lang/crates.io-index" 1340 | checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" 1341 | 1342 | [[package]] 1343 | name = "hex" 1344 | version = "0.4.3" 1345 | source = "registry+https://github.com/rust-lang/crates.io-index" 1346 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1347 | 1348 | [[package]] 1349 | name = "hexf-parse" 1350 | version = "0.2.1" 1351 | source = "registry+https://github.com/rust-lang/crates.io-index" 1352 | checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" 1353 | 1354 | [[package]] 1355 | name = "iced" 1356 | version = "0.13.1" 1357 | source = "registry+https://github.com/rust-lang/crates.io-index" 1358 | checksum = "88acfabc84ec077eaf9ede3457ffa3a104626d79022a9bf7f296093b1d60c73f" 1359 | dependencies = [ 1360 | "iced_core", 1361 | "iced_futures", 1362 | "iced_renderer", 1363 | "iced_widget", 1364 | "iced_winit", 1365 | "thiserror", 1366 | ] 1367 | 1368 | [[package]] 1369 | name = "iced_core" 1370 | version = "0.13.2" 1371 | source = "registry+https://github.com/rust-lang/crates.io-index" 1372 | checksum = "0013a238275494641bf8f1732a23a808196540dc67b22ff97099c044ae4c8a1c" 1373 | dependencies = [ 1374 | "bitflags 2.8.0", 1375 | "bytes", 1376 | "dark-light", 1377 | "glam", 1378 | "log", 1379 | "num-traits", 1380 | "once_cell", 1381 | "palette", 1382 | "rustc-hash 2.1.0", 1383 | "smol_str", 1384 | "thiserror", 1385 | "web-time", 1386 | ] 1387 | 1388 | [[package]] 1389 | name = "iced_futures" 1390 | version = "0.13.2" 1391 | source = "registry+https://github.com/rust-lang/crates.io-index" 1392 | checksum = "0c04a6745ba2e80f32cf01e034fd00d853aa4f4cd8b91888099cb7aaee0d5d7c" 1393 | dependencies = [ 1394 | "futures", 1395 | "iced_core", 1396 | "log", 1397 | "rustc-hash 2.1.0", 1398 | "wasm-bindgen-futures", 1399 | "wasm-timer", 1400 | ] 1401 | 1402 | [[package]] 1403 | name = "iced_glyphon" 1404 | version = "0.6.0" 1405 | source = "registry+https://github.com/rust-lang/crates.io-index" 1406 | checksum = "41c3bb56f1820ca252bc1d0994ece33d233a55657c0c263ea7cb16895adbde82" 1407 | dependencies = [ 1408 | "cosmic-text", 1409 | "etagere", 1410 | "lru", 1411 | "rustc-hash 2.1.0", 1412 | "wgpu", 1413 | ] 1414 | 1415 | [[package]] 1416 | name = "iced_graphics" 1417 | version = "0.13.0" 1418 | source = "registry+https://github.com/rust-lang/crates.io-index" 1419 | checksum = "ba25a18cfa6d5cc160aca7e1b34f73ccdff21680fa8702168c09739767b6c66f" 1420 | dependencies = [ 1421 | "bitflags 2.8.0", 1422 | "bytemuck", 1423 | "cosmic-text", 1424 | "half", 1425 | "iced_core", 1426 | "iced_futures", 1427 | "log", 1428 | "once_cell", 1429 | "raw-window-handle", 1430 | "rustc-hash 2.1.0", 1431 | "thiserror", 1432 | "unicode-segmentation", 1433 | ] 1434 | 1435 | [[package]] 1436 | name = "iced_renderer" 1437 | version = "0.13.0" 1438 | source = "registry+https://github.com/rust-lang/crates.io-index" 1439 | checksum = "73558208059f9e622df2bf434e044ee2f838ce75201a023cf0ca3e1244f46c2a" 1440 | dependencies = [ 1441 | "iced_graphics", 1442 | "iced_tiny_skia", 1443 | "iced_wgpu", 1444 | "log", 1445 | "thiserror", 1446 | ] 1447 | 1448 | [[package]] 1449 | name = "iced_runtime" 1450 | version = "0.13.2" 1451 | source = "registry+https://github.com/rust-lang/crates.io-index" 1452 | checksum = "348b5b2c61c934d88ca3b0ed1ed913291e923d086a66fa288ce9669da9ef62b5" 1453 | dependencies = [ 1454 | "bytes", 1455 | "iced_core", 1456 | "iced_futures", 1457 | "raw-window-handle", 1458 | "thiserror", 1459 | ] 1460 | 1461 | [[package]] 1462 | name = "iced_tiny_skia" 1463 | version = "0.13.0" 1464 | source = "registry+https://github.com/rust-lang/crates.io-index" 1465 | checksum = "c625d368284fcc43b0b36b176f76eff1abebe7959dd58bd8ce6897d641962a50" 1466 | dependencies = [ 1467 | "bytemuck", 1468 | "cosmic-text", 1469 | "iced_graphics", 1470 | "kurbo", 1471 | "log", 1472 | "rustc-hash 2.1.0", 1473 | "softbuffer", 1474 | "tiny-skia", 1475 | ] 1476 | 1477 | [[package]] 1478 | name = "iced_wgpu" 1479 | version = "0.13.5" 1480 | source = "registry+https://github.com/rust-lang/crates.io-index" 1481 | checksum = "15708887133671d2bcc6c1d01d1f176f43a64d6cdc3b2bf893396c3ee498295f" 1482 | dependencies = [ 1483 | "bitflags 2.8.0", 1484 | "bytemuck", 1485 | "futures", 1486 | "glam", 1487 | "guillotiere", 1488 | "iced_glyphon", 1489 | "iced_graphics", 1490 | "log", 1491 | "once_cell", 1492 | "rustc-hash 2.1.0", 1493 | "thiserror", 1494 | "wgpu", 1495 | ] 1496 | 1497 | [[package]] 1498 | name = "iced_widget" 1499 | version = "0.13.4" 1500 | source = "registry+https://github.com/rust-lang/crates.io-index" 1501 | checksum = "81429e1b950b0e4bca65be4c4278fea6678ea782030a411778f26fa9f8983e1d" 1502 | dependencies = [ 1503 | "iced_renderer", 1504 | "iced_runtime", 1505 | "num-traits", 1506 | "once_cell", 1507 | "rustc-hash 2.1.0", 1508 | "thiserror", 1509 | "unicode-segmentation", 1510 | ] 1511 | 1512 | [[package]] 1513 | name = "iced_winit" 1514 | version = "0.13.0" 1515 | source = "registry+https://github.com/rust-lang/crates.io-index" 1516 | checksum = "f44cd4e1c594b6334f409282937bf972ba14d31fedf03c23aa595d982a2fda28" 1517 | dependencies = [ 1518 | "iced_futures", 1519 | "iced_graphics", 1520 | "iced_runtime", 1521 | "log", 1522 | "rustc-hash 2.1.0", 1523 | "thiserror", 1524 | "tracing", 1525 | "wasm-bindgen-futures", 1526 | "web-sys", 1527 | "winapi", 1528 | "window_clipboard", 1529 | "winit", 1530 | ] 1531 | 1532 | [[package]] 1533 | name = "indexmap" 1534 | version = "2.7.0" 1535 | source = "registry+https://github.com/rust-lang/crates.io-index" 1536 | checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" 1537 | dependencies = [ 1538 | "equivalent", 1539 | "hashbrown 0.15.2", 1540 | ] 1541 | 1542 | [[package]] 1543 | name = "instant" 1544 | version = "0.1.13" 1545 | source = "registry+https://github.com/rust-lang/crates.io-index" 1546 | checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" 1547 | dependencies = [ 1548 | "cfg-if", 1549 | ] 1550 | 1551 | [[package]] 1552 | name = "jni" 1553 | version = "0.21.1" 1554 | source = "registry+https://github.com/rust-lang/crates.io-index" 1555 | checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" 1556 | dependencies = [ 1557 | "cesu8", 1558 | "cfg-if", 1559 | "combine", 1560 | "jni-sys", 1561 | "log", 1562 | "thiserror", 1563 | "walkdir", 1564 | "windows-sys 0.45.0", 1565 | ] 1566 | 1567 | [[package]] 1568 | name = "jni-sys" 1569 | version = "0.3.0" 1570 | source = "registry+https://github.com/rust-lang/crates.io-index" 1571 | checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 1572 | 1573 | [[package]] 1574 | name = "jobserver" 1575 | version = "0.1.32" 1576 | source = "registry+https://github.com/rust-lang/crates.io-index" 1577 | checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" 1578 | dependencies = [ 1579 | "libc", 1580 | ] 1581 | 1582 | [[package]] 1583 | name = "js-sys" 1584 | version = "0.3.77" 1585 | source = "registry+https://github.com/rust-lang/crates.io-index" 1586 | checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" 1587 | dependencies = [ 1588 | "once_cell", 1589 | "wasm-bindgen", 1590 | ] 1591 | 1592 | [[package]] 1593 | name = "khronos-egl" 1594 | version = "6.0.0" 1595 | source = "registry+https://github.com/rust-lang/crates.io-index" 1596 | checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" 1597 | dependencies = [ 1598 | "libc", 1599 | "libloading 0.8.6", 1600 | "pkg-config", 1601 | ] 1602 | 1603 | [[package]] 1604 | name = "khronos_api" 1605 | version = "3.1.0" 1606 | source = "registry+https://github.com/rust-lang/crates.io-index" 1607 | checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" 1608 | 1609 | [[package]] 1610 | name = "kurbo" 1611 | version = "0.10.4" 1612 | source = "registry+https://github.com/rust-lang/crates.io-index" 1613 | checksum = "1618d4ebd923e97d67e7cd363d80aef35fe961005cbbbb3d2dad8bdd1bc63440" 1614 | dependencies = [ 1615 | "arrayvec", 1616 | "smallvec", 1617 | ] 1618 | 1619 | [[package]] 1620 | name = "libc" 1621 | version = "0.2.169" 1622 | source = "registry+https://github.com/rust-lang/crates.io-index" 1623 | checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" 1624 | 1625 | [[package]] 1626 | name = "libloading" 1627 | version = "0.7.4" 1628 | source = "registry+https://github.com/rust-lang/crates.io-index" 1629 | checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" 1630 | dependencies = [ 1631 | "cfg-if", 1632 | "winapi", 1633 | ] 1634 | 1635 | [[package]] 1636 | name = "libloading" 1637 | version = "0.8.6" 1638 | source = "registry+https://github.com/rust-lang/crates.io-index" 1639 | checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" 1640 | dependencies = [ 1641 | "cfg-if", 1642 | "windows-targets 0.52.6", 1643 | ] 1644 | 1645 | [[package]] 1646 | name = "libm" 1647 | version = "0.2.11" 1648 | source = "registry+https://github.com/rust-lang/crates.io-index" 1649 | checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" 1650 | 1651 | [[package]] 1652 | name = "libredox" 1653 | version = "0.1.3" 1654 | source = "registry+https://github.com/rust-lang/crates.io-index" 1655 | checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" 1656 | dependencies = [ 1657 | "bitflags 2.8.0", 1658 | "libc", 1659 | "redox_syscall 0.5.8", 1660 | ] 1661 | 1662 | [[package]] 1663 | name = "linux-raw-sys" 1664 | version = "0.4.15" 1665 | source = "registry+https://github.com/rust-lang/crates.io-index" 1666 | checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" 1667 | 1668 | [[package]] 1669 | name = "linux-raw-sys" 1670 | version = "0.6.5" 1671 | source = "registry+https://github.com/rust-lang/crates.io-index" 1672 | checksum = "2a385b1be4e5c3e362ad2ffa73c392e53f031eaa5b7d648e64cd87f27f6063d7" 1673 | 1674 | [[package]] 1675 | name = "lock_api" 1676 | version = "0.4.12" 1677 | source = "registry+https://github.com/rust-lang/crates.io-index" 1678 | checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" 1679 | dependencies = [ 1680 | "autocfg", 1681 | "scopeguard", 1682 | ] 1683 | 1684 | [[package]] 1685 | name = "log" 1686 | version = "0.4.25" 1687 | source = "registry+https://github.com/rust-lang/crates.io-index" 1688 | checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" 1689 | 1690 | [[package]] 1691 | name = "lru" 1692 | version = "0.12.5" 1693 | source = "registry+https://github.com/rust-lang/crates.io-index" 1694 | checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" 1695 | 1696 | [[package]] 1697 | name = "malloc_buf" 1698 | version = "0.0.6" 1699 | source = "registry+https://github.com/rust-lang/crates.io-index" 1700 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 1701 | dependencies = [ 1702 | "libc", 1703 | ] 1704 | 1705 | [[package]] 1706 | name = "memchr" 1707 | version = "2.7.4" 1708 | source = "registry+https://github.com/rust-lang/crates.io-index" 1709 | checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 1710 | 1711 | [[package]] 1712 | name = "memmap2" 1713 | version = "0.9.5" 1714 | source = "registry+https://github.com/rust-lang/crates.io-index" 1715 | checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" 1716 | dependencies = [ 1717 | "libc", 1718 | ] 1719 | 1720 | [[package]] 1721 | name = "memoffset" 1722 | version = "0.9.1" 1723 | source = "registry+https://github.com/rust-lang/crates.io-index" 1724 | checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" 1725 | dependencies = [ 1726 | "autocfg", 1727 | ] 1728 | 1729 | [[package]] 1730 | name = "metal" 1731 | version = "0.27.0" 1732 | source = "registry+https://github.com/rust-lang/crates.io-index" 1733 | checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" 1734 | dependencies = [ 1735 | "bitflags 2.8.0", 1736 | "block", 1737 | "core-graphics-types 0.1.3", 1738 | "foreign-types", 1739 | "log", 1740 | "objc", 1741 | "paste", 1742 | ] 1743 | 1744 | [[package]] 1745 | name = "miniz_oxide" 1746 | version = "0.8.3" 1747 | source = "registry+https://github.com/rust-lang/crates.io-index" 1748 | checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" 1749 | dependencies = [ 1750 | "adler2", 1751 | "simd-adler32", 1752 | ] 1753 | 1754 | [[package]] 1755 | name = "naga" 1756 | version = "0.19.2" 1757 | source = "registry+https://github.com/rust-lang/crates.io-index" 1758 | checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" 1759 | dependencies = [ 1760 | "bit-set", 1761 | "bitflags 2.8.0", 1762 | "codespan-reporting", 1763 | "hexf-parse", 1764 | "indexmap", 1765 | "log", 1766 | "num-traits", 1767 | "rustc-hash 1.1.0", 1768 | "spirv", 1769 | "termcolor", 1770 | "thiserror", 1771 | "unicode-xid", 1772 | ] 1773 | 1774 | [[package]] 1775 | name = "ndk" 1776 | version = "0.9.0" 1777 | source = "registry+https://github.com/rust-lang/crates.io-index" 1778 | checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" 1779 | dependencies = [ 1780 | "bitflags 2.8.0", 1781 | "jni-sys", 1782 | "log", 1783 | "ndk-sys 0.6.0+11769913", 1784 | "num_enum", 1785 | "raw-window-handle", 1786 | "thiserror", 1787 | ] 1788 | 1789 | [[package]] 1790 | name = "ndk-context" 1791 | version = "0.1.1" 1792 | source = "registry+https://github.com/rust-lang/crates.io-index" 1793 | checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 1794 | 1795 | [[package]] 1796 | name = "ndk-sys" 1797 | version = "0.5.0+25.2.9519653" 1798 | source = "registry+https://github.com/rust-lang/crates.io-index" 1799 | checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" 1800 | dependencies = [ 1801 | "jni-sys", 1802 | ] 1803 | 1804 | [[package]] 1805 | name = "ndk-sys" 1806 | version = "0.6.0+11769913" 1807 | source = "registry+https://github.com/rust-lang/crates.io-index" 1808 | checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" 1809 | dependencies = [ 1810 | "jni-sys", 1811 | ] 1812 | 1813 | [[package]] 1814 | name = "nix" 1815 | version = "0.29.0" 1816 | source = "registry+https://github.com/rust-lang/crates.io-index" 1817 | checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" 1818 | dependencies = [ 1819 | "bitflags 2.8.0", 1820 | "cfg-if", 1821 | "cfg_aliases 0.2.1", 1822 | "libc", 1823 | "memoffset", 1824 | ] 1825 | 1826 | [[package]] 1827 | name = "num-traits" 1828 | version = "0.2.19" 1829 | source = "registry+https://github.com/rust-lang/crates.io-index" 1830 | checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 1831 | dependencies = [ 1832 | "autocfg", 1833 | ] 1834 | 1835 | [[package]] 1836 | name = "num_cpus" 1837 | version = "1.16.0" 1838 | source = "registry+https://github.com/rust-lang/crates.io-index" 1839 | checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 1840 | dependencies = [ 1841 | "hermit-abi 0.3.9", 1842 | "libc", 1843 | ] 1844 | 1845 | [[package]] 1846 | name = "num_enum" 1847 | version = "0.7.3" 1848 | source = "registry+https://github.com/rust-lang/crates.io-index" 1849 | checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" 1850 | dependencies = [ 1851 | "num_enum_derive", 1852 | ] 1853 | 1854 | [[package]] 1855 | name = "num_enum_derive" 1856 | version = "0.7.3" 1857 | source = "registry+https://github.com/rust-lang/crates.io-index" 1858 | checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" 1859 | dependencies = [ 1860 | "proc-macro-crate", 1861 | "proc-macro2", 1862 | "quote", 1863 | "syn 2.0.96", 1864 | ] 1865 | 1866 | [[package]] 1867 | name = "objc" 1868 | version = "0.2.7" 1869 | source = "registry+https://github.com/rust-lang/crates.io-index" 1870 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 1871 | dependencies = [ 1872 | "malloc_buf", 1873 | "objc_exception", 1874 | ] 1875 | 1876 | [[package]] 1877 | name = "objc-sys" 1878 | version = "0.3.5" 1879 | source = "registry+https://github.com/rust-lang/crates.io-index" 1880 | checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" 1881 | 1882 | [[package]] 1883 | name = "objc2" 1884 | version = "0.5.2" 1885 | source = "registry+https://github.com/rust-lang/crates.io-index" 1886 | checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" 1887 | dependencies = [ 1888 | "objc-sys", 1889 | "objc2-encode", 1890 | ] 1891 | 1892 | [[package]] 1893 | name = "objc2-app-kit" 1894 | version = "0.2.2" 1895 | source = "registry+https://github.com/rust-lang/crates.io-index" 1896 | checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" 1897 | dependencies = [ 1898 | "bitflags 2.8.0", 1899 | "block2", 1900 | "libc", 1901 | "objc2", 1902 | "objc2-core-data", 1903 | "objc2-core-image", 1904 | "objc2-foundation", 1905 | "objc2-quartz-core", 1906 | ] 1907 | 1908 | [[package]] 1909 | name = "objc2-cloud-kit" 1910 | version = "0.2.2" 1911 | source = "registry+https://github.com/rust-lang/crates.io-index" 1912 | checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" 1913 | dependencies = [ 1914 | "bitflags 2.8.0", 1915 | "block2", 1916 | "objc2", 1917 | "objc2-core-location", 1918 | "objc2-foundation", 1919 | ] 1920 | 1921 | [[package]] 1922 | name = "objc2-contacts" 1923 | version = "0.2.2" 1924 | source = "registry+https://github.com/rust-lang/crates.io-index" 1925 | checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" 1926 | dependencies = [ 1927 | "block2", 1928 | "objc2", 1929 | "objc2-foundation", 1930 | ] 1931 | 1932 | [[package]] 1933 | name = "objc2-core-data" 1934 | version = "0.2.2" 1935 | source = "registry+https://github.com/rust-lang/crates.io-index" 1936 | checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" 1937 | dependencies = [ 1938 | "bitflags 2.8.0", 1939 | "block2", 1940 | "objc2", 1941 | "objc2-foundation", 1942 | ] 1943 | 1944 | [[package]] 1945 | name = "objc2-core-image" 1946 | version = "0.2.2" 1947 | source = "registry+https://github.com/rust-lang/crates.io-index" 1948 | checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" 1949 | dependencies = [ 1950 | "block2", 1951 | "objc2", 1952 | "objc2-foundation", 1953 | "objc2-metal", 1954 | ] 1955 | 1956 | [[package]] 1957 | name = "objc2-core-location" 1958 | version = "0.2.2" 1959 | source = "registry+https://github.com/rust-lang/crates.io-index" 1960 | checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" 1961 | dependencies = [ 1962 | "block2", 1963 | "objc2", 1964 | "objc2-contacts", 1965 | "objc2-foundation", 1966 | ] 1967 | 1968 | [[package]] 1969 | name = "objc2-encode" 1970 | version = "4.0.3" 1971 | source = "registry+https://github.com/rust-lang/crates.io-index" 1972 | checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" 1973 | 1974 | [[package]] 1975 | name = "objc2-foundation" 1976 | version = "0.2.2" 1977 | source = "registry+https://github.com/rust-lang/crates.io-index" 1978 | checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" 1979 | dependencies = [ 1980 | "bitflags 2.8.0", 1981 | "block2", 1982 | "dispatch", 1983 | "libc", 1984 | "objc2", 1985 | ] 1986 | 1987 | [[package]] 1988 | name = "objc2-link-presentation" 1989 | version = "0.2.2" 1990 | source = "registry+https://github.com/rust-lang/crates.io-index" 1991 | checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" 1992 | dependencies = [ 1993 | "block2", 1994 | "objc2", 1995 | "objc2-app-kit", 1996 | "objc2-foundation", 1997 | ] 1998 | 1999 | [[package]] 2000 | name = "objc2-metal" 2001 | version = "0.2.2" 2002 | source = "registry+https://github.com/rust-lang/crates.io-index" 2003 | checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" 2004 | dependencies = [ 2005 | "bitflags 2.8.0", 2006 | "block2", 2007 | "objc2", 2008 | "objc2-foundation", 2009 | ] 2010 | 2011 | [[package]] 2012 | name = "objc2-quartz-core" 2013 | version = "0.2.2" 2014 | source = "registry+https://github.com/rust-lang/crates.io-index" 2015 | checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" 2016 | dependencies = [ 2017 | "bitflags 2.8.0", 2018 | "block2", 2019 | "objc2", 2020 | "objc2-foundation", 2021 | "objc2-metal", 2022 | ] 2023 | 2024 | [[package]] 2025 | name = "objc2-symbols" 2026 | version = "0.2.2" 2027 | source = "registry+https://github.com/rust-lang/crates.io-index" 2028 | checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" 2029 | dependencies = [ 2030 | "objc2", 2031 | "objc2-foundation", 2032 | ] 2033 | 2034 | [[package]] 2035 | name = "objc2-ui-kit" 2036 | version = "0.2.2" 2037 | source = "registry+https://github.com/rust-lang/crates.io-index" 2038 | checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" 2039 | dependencies = [ 2040 | "bitflags 2.8.0", 2041 | "block2", 2042 | "objc2", 2043 | "objc2-cloud-kit", 2044 | "objc2-core-data", 2045 | "objc2-core-image", 2046 | "objc2-core-location", 2047 | "objc2-foundation", 2048 | "objc2-link-presentation", 2049 | "objc2-quartz-core", 2050 | "objc2-symbols", 2051 | "objc2-uniform-type-identifiers", 2052 | "objc2-user-notifications", 2053 | ] 2054 | 2055 | [[package]] 2056 | name = "objc2-uniform-type-identifiers" 2057 | version = "0.2.2" 2058 | source = "registry+https://github.com/rust-lang/crates.io-index" 2059 | checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" 2060 | dependencies = [ 2061 | "block2", 2062 | "objc2", 2063 | "objc2-foundation", 2064 | ] 2065 | 2066 | [[package]] 2067 | name = "objc2-user-notifications" 2068 | version = "0.2.2" 2069 | source = "registry+https://github.com/rust-lang/crates.io-index" 2070 | checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" 2071 | dependencies = [ 2072 | "bitflags 2.8.0", 2073 | "block2", 2074 | "objc2", 2075 | "objc2-core-location", 2076 | "objc2-foundation", 2077 | ] 2078 | 2079 | [[package]] 2080 | name = "objc_exception" 2081 | version = "0.1.2" 2082 | source = "registry+https://github.com/rust-lang/crates.io-index" 2083 | checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" 2084 | dependencies = [ 2085 | "cc", 2086 | ] 2087 | 2088 | [[package]] 2089 | name = "once_cell" 2090 | version = "1.20.2" 2091 | source = "registry+https://github.com/rust-lang/crates.io-index" 2092 | checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" 2093 | 2094 | [[package]] 2095 | name = "orbclient" 2096 | version = "0.3.48" 2097 | source = "registry+https://github.com/rust-lang/crates.io-index" 2098 | checksum = "ba0b26cec2e24f08ed8bb31519a9333140a6599b867dac464bb150bdb796fd43" 2099 | dependencies = [ 2100 | "libredox", 2101 | ] 2102 | 2103 | [[package]] 2104 | name = "ordered-multimap" 2105 | version = "0.4.3" 2106 | source = "registry+https://github.com/rust-lang/crates.io-index" 2107 | checksum = "ccd746e37177e1711c20dd619a1620f34f5c8b569c53590a72dedd5344d8924a" 2108 | dependencies = [ 2109 | "dlv-list", 2110 | "hashbrown 0.12.3", 2111 | ] 2112 | 2113 | [[package]] 2114 | name = "ordered-stream" 2115 | version = "0.2.0" 2116 | source = "registry+https://github.com/rust-lang/crates.io-index" 2117 | checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" 2118 | dependencies = [ 2119 | "futures-core", 2120 | "pin-project-lite", 2121 | ] 2122 | 2123 | [[package]] 2124 | name = "owned_ttf_parser" 2125 | version = "0.25.0" 2126 | source = "registry+https://github.com/rust-lang/crates.io-index" 2127 | checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" 2128 | dependencies = [ 2129 | "ttf-parser 0.25.1", 2130 | ] 2131 | 2132 | [[package]] 2133 | name = "palette" 2134 | version = "0.7.6" 2135 | source = "registry+https://github.com/rust-lang/crates.io-index" 2136 | checksum = "4cbf71184cc5ecc2e4e1baccdb21026c20e5fc3dcf63028a086131b3ab00b6e6" 2137 | dependencies = [ 2138 | "approx", 2139 | "fast-srgb8", 2140 | "palette_derive", 2141 | "phf", 2142 | ] 2143 | 2144 | [[package]] 2145 | name = "palette_derive" 2146 | version = "0.7.6" 2147 | source = "registry+https://github.com/rust-lang/crates.io-index" 2148 | checksum = "f5030daf005bface118c096f510ffb781fc28f9ab6a32ab224d8631be6851d30" 2149 | dependencies = [ 2150 | "by_address", 2151 | "proc-macro2", 2152 | "quote", 2153 | "syn 2.0.96", 2154 | ] 2155 | 2156 | [[package]] 2157 | name = "parking" 2158 | version = "2.2.1" 2159 | source = "registry+https://github.com/rust-lang/crates.io-index" 2160 | checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" 2161 | 2162 | [[package]] 2163 | name = "parking_lot" 2164 | version = "0.11.2" 2165 | source = "registry+https://github.com/rust-lang/crates.io-index" 2166 | checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" 2167 | dependencies = [ 2168 | "instant", 2169 | "lock_api", 2170 | "parking_lot_core 0.8.6", 2171 | ] 2172 | 2173 | [[package]] 2174 | name = "parking_lot" 2175 | version = "0.12.3" 2176 | source = "registry+https://github.com/rust-lang/crates.io-index" 2177 | checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" 2178 | dependencies = [ 2179 | "lock_api", 2180 | "parking_lot_core 0.9.10", 2181 | ] 2182 | 2183 | [[package]] 2184 | name = "parking_lot_core" 2185 | version = "0.8.6" 2186 | source = "registry+https://github.com/rust-lang/crates.io-index" 2187 | checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" 2188 | dependencies = [ 2189 | "cfg-if", 2190 | "instant", 2191 | "libc", 2192 | "redox_syscall 0.2.16", 2193 | "smallvec", 2194 | "winapi", 2195 | ] 2196 | 2197 | [[package]] 2198 | name = "parking_lot_core" 2199 | version = "0.9.10" 2200 | source = "registry+https://github.com/rust-lang/crates.io-index" 2201 | checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" 2202 | dependencies = [ 2203 | "cfg-if", 2204 | "libc", 2205 | "redox_syscall 0.5.8", 2206 | "smallvec", 2207 | "windows-targets 0.52.6", 2208 | ] 2209 | 2210 | [[package]] 2211 | name = "paste" 2212 | version = "1.0.15" 2213 | source = "registry+https://github.com/rust-lang/crates.io-index" 2214 | checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 2215 | 2216 | [[package]] 2217 | name = "percent-encoding" 2218 | version = "2.3.1" 2219 | source = "registry+https://github.com/rust-lang/crates.io-index" 2220 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 2221 | 2222 | [[package]] 2223 | name = "phf" 2224 | version = "0.11.3" 2225 | source = "registry+https://github.com/rust-lang/crates.io-index" 2226 | checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" 2227 | dependencies = [ 2228 | "phf_macros", 2229 | "phf_shared", 2230 | ] 2231 | 2232 | [[package]] 2233 | name = "phf_generator" 2234 | version = "0.11.3" 2235 | source = "registry+https://github.com/rust-lang/crates.io-index" 2236 | checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" 2237 | dependencies = [ 2238 | "phf_shared", 2239 | "rand", 2240 | ] 2241 | 2242 | [[package]] 2243 | name = "phf_macros" 2244 | version = "0.11.3" 2245 | source = "registry+https://github.com/rust-lang/crates.io-index" 2246 | checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" 2247 | dependencies = [ 2248 | "phf_generator", 2249 | "phf_shared", 2250 | "proc-macro2", 2251 | "quote", 2252 | "syn 2.0.96", 2253 | ] 2254 | 2255 | [[package]] 2256 | name = "phf_shared" 2257 | version = "0.11.3" 2258 | source = "registry+https://github.com/rust-lang/crates.io-index" 2259 | checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" 2260 | dependencies = [ 2261 | "siphasher", 2262 | ] 2263 | 2264 | [[package]] 2265 | name = "pin-project" 2266 | version = "1.1.8" 2267 | source = "registry+https://github.com/rust-lang/crates.io-index" 2268 | checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" 2269 | dependencies = [ 2270 | "pin-project-internal", 2271 | ] 2272 | 2273 | [[package]] 2274 | name = "pin-project-internal" 2275 | version = "1.1.8" 2276 | source = "registry+https://github.com/rust-lang/crates.io-index" 2277 | checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" 2278 | dependencies = [ 2279 | "proc-macro2", 2280 | "quote", 2281 | "syn 2.0.96", 2282 | ] 2283 | 2284 | [[package]] 2285 | name = "pin-project-lite" 2286 | version = "0.2.16" 2287 | source = "registry+https://github.com/rust-lang/crates.io-index" 2288 | checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 2289 | 2290 | [[package]] 2291 | name = "pin-utils" 2292 | version = "0.1.0" 2293 | source = "registry+https://github.com/rust-lang/crates.io-index" 2294 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 2295 | 2296 | [[package]] 2297 | name = "piper" 2298 | version = "0.2.4" 2299 | source = "registry+https://github.com/rust-lang/crates.io-index" 2300 | checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" 2301 | dependencies = [ 2302 | "atomic-waker", 2303 | "fastrand", 2304 | "futures-io", 2305 | ] 2306 | 2307 | [[package]] 2308 | name = "pkg-config" 2309 | version = "0.3.31" 2310 | source = "registry+https://github.com/rust-lang/crates.io-index" 2311 | checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" 2312 | 2313 | [[package]] 2314 | name = "png" 2315 | version = "0.17.16" 2316 | source = "registry+https://github.com/rust-lang/crates.io-index" 2317 | checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" 2318 | dependencies = [ 2319 | "bitflags 1.3.2", 2320 | "crc32fast", 2321 | "fdeflate", 2322 | "flate2", 2323 | "miniz_oxide", 2324 | ] 2325 | 2326 | [[package]] 2327 | name = "polling" 2328 | version = "3.7.4" 2329 | source = "registry+https://github.com/rust-lang/crates.io-index" 2330 | checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" 2331 | dependencies = [ 2332 | "cfg-if", 2333 | "concurrent-queue", 2334 | "hermit-abi 0.4.0", 2335 | "pin-project-lite", 2336 | "rustix", 2337 | "tracing", 2338 | "windows-sys 0.59.0", 2339 | ] 2340 | 2341 | [[package]] 2342 | name = "ppv-lite86" 2343 | version = "0.2.20" 2344 | source = "registry+https://github.com/rust-lang/crates.io-index" 2345 | checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" 2346 | dependencies = [ 2347 | "zerocopy", 2348 | ] 2349 | 2350 | [[package]] 2351 | name = "presser" 2352 | version = "0.3.1" 2353 | source = "registry+https://github.com/rust-lang/crates.io-index" 2354 | checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" 2355 | 2356 | [[package]] 2357 | name = "proc-macro-crate" 2358 | version = "3.2.0" 2359 | source = "registry+https://github.com/rust-lang/crates.io-index" 2360 | checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" 2361 | dependencies = [ 2362 | "toml_edit", 2363 | ] 2364 | 2365 | [[package]] 2366 | name = "proc-macro2" 2367 | version = "1.0.93" 2368 | source = "registry+https://github.com/rust-lang/crates.io-index" 2369 | checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" 2370 | dependencies = [ 2371 | "unicode-ident", 2372 | ] 2373 | 2374 | [[package]] 2375 | name = "profiling" 2376 | version = "1.0.16" 2377 | source = "registry+https://github.com/rust-lang/crates.io-index" 2378 | checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" 2379 | 2380 | [[package]] 2381 | name = "quick-xml" 2382 | version = "0.36.2" 2383 | source = "registry+https://github.com/rust-lang/crates.io-index" 2384 | checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" 2385 | dependencies = [ 2386 | "memchr", 2387 | ] 2388 | 2389 | [[package]] 2390 | name = "quote" 2391 | version = "1.0.38" 2392 | source = "registry+https://github.com/rust-lang/crates.io-index" 2393 | checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" 2394 | dependencies = [ 2395 | "proc-macro2", 2396 | ] 2397 | 2398 | [[package]] 2399 | name = "rand" 2400 | version = "0.8.5" 2401 | source = "registry+https://github.com/rust-lang/crates.io-index" 2402 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 2403 | dependencies = [ 2404 | "libc", 2405 | "rand_chacha", 2406 | "rand_core", 2407 | ] 2408 | 2409 | [[package]] 2410 | name = "rand_chacha" 2411 | version = "0.3.1" 2412 | source = "registry+https://github.com/rust-lang/crates.io-index" 2413 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 2414 | dependencies = [ 2415 | "ppv-lite86", 2416 | "rand_core", 2417 | ] 2418 | 2419 | [[package]] 2420 | name = "rand_core" 2421 | version = "0.6.4" 2422 | source = "registry+https://github.com/rust-lang/crates.io-index" 2423 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 2424 | dependencies = [ 2425 | "getrandom", 2426 | ] 2427 | 2428 | [[package]] 2429 | name = "range-alloc" 2430 | version = "0.1.3" 2431 | source = "registry+https://github.com/rust-lang/crates.io-index" 2432 | checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab" 2433 | 2434 | [[package]] 2435 | name = "rangemap" 2436 | version = "1.5.1" 2437 | source = "registry+https://github.com/rust-lang/crates.io-index" 2438 | checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684" 2439 | 2440 | [[package]] 2441 | name = "raw-window-handle" 2442 | version = "0.6.2" 2443 | source = "registry+https://github.com/rust-lang/crates.io-index" 2444 | checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" 2445 | 2446 | [[package]] 2447 | name = "rayon" 2448 | version = "1.10.0" 2449 | source = "registry+https://github.com/rust-lang/crates.io-index" 2450 | checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" 2451 | dependencies = [ 2452 | "either", 2453 | "rayon-core", 2454 | ] 2455 | 2456 | [[package]] 2457 | name = "rayon-core" 2458 | version = "1.12.1" 2459 | source = "registry+https://github.com/rust-lang/crates.io-index" 2460 | checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" 2461 | dependencies = [ 2462 | "crossbeam-deque", 2463 | "crossbeam-utils", 2464 | ] 2465 | 2466 | [[package]] 2467 | name = "read-fonts" 2468 | version = "0.22.7" 2469 | source = "registry+https://github.com/rust-lang/crates.io-index" 2470 | checksum = "69aacb76b5c29acfb7f90155d39759a29496aebb49395830e928a9703d2eec2f" 2471 | dependencies = [ 2472 | "bytemuck", 2473 | "font-types", 2474 | ] 2475 | 2476 | [[package]] 2477 | name = "receipts" 2478 | version = "0.1.0" 2479 | dependencies = [ 2480 | "iced", 2481 | ] 2482 | 2483 | [[package]] 2484 | name = "redox_syscall" 2485 | version = "0.2.16" 2486 | source = "registry+https://github.com/rust-lang/crates.io-index" 2487 | checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 2488 | dependencies = [ 2489 | "bitflags 1.3.2", 2490 | ] 2491 | 2492 | [[package]] 2493 | name = "redox_syscall" 2494 | version = "0.4.1" 2495 | source = "registry+https://github.com/rust-lang/crates.io-index" 2496 | checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" 2497 | dependencies = [ 2498 | "bitflags 1.3.2", 2499 | ] 2500 | 2501 | [[package]] 2502 | name = "redox_syscall" 2503 | version = "0.5.8" 2504 | source = "registry+https://github.com/rust-lang/crates.io-index" 2505 | checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" 2506 | dependencies = [ 2507 | "bitflags 2.8.0", 2508 | ] 2509 | 2510 | [[package]] 2511 | name = "redox_users" 2512 | version = "0.4.6" 2513 | source = "registry+https://github.com/rust-lang/crates.io-index" 2514 | checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" 2515 | dependencies = [ 2516 | "getrandom", 2517 | "libredox", 2518 | "thiserror", 2519 | ] 2520 | 2521 | [[package]] 2522 | name = "renderdoc-sys" 2523 | version = "1.1.0" 2524 | source = "registry+https://github.com/rust-lang/crates.io-index" 2525 | checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" 2526 | 2527 | [[package]] 2528 | name = "roxmltree" 2529 | version = "0.20.0" 2530 | source = "registry+https://github.com/rust-lang/crates.io-index" 2531 | checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" 2532 | 2533 | [[package]] 2534 | name = "rust-ini" 2535 | version = "0.18.0" 2536 | source = "registry+https://github.com/rust-lang/crates.io-index" 2537 | checksum = "f6d5f2436026b4f6e79dc829837d467cc7e9a55ee40e750d716713540715a2df" 2538 | dependencies = [ 2539 | "cfg-if", 2540 | "ordered-multimap", 2541 | ] 2542 | 2543 | [[package]] 2544 | name = "rustc-hash" 2545 | version = "1.1.0" 2546 | source = "registry+https://github.com/rust-lang/crates.io-index" 2547 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 2548 | 2549 | [[package]] 2550 | name = "rustc-hash" 2551 | version = "2.1.0" 2552 | source = "registry+https://github.com/rust-lang/crates.io-index" 2553 | checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" 2554 | 2555 | [[package]] 2556 | name = "rustix" 2557 | version = "0.38.43" 2558 | source = "registry+https://github.com/rust-lang/crates.io-index" 2559 | checksum = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6" 2560 | dependencies = [ 2561 | "bitflags 2.8.0", 2562 | "errno", 2563 | "libc", 2564 | "linux-raw-sys 0.4.15", 2565 | "windows-sys 0.59.0", 2566 | ] 2567 | 2568 | [[package]] 2569 | name = "rustversion" 2570 | version = "1.0.19" 2571 | source = "registry+https://github.com/rust-lang/crates.io-index" 2572 | checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" 2573 | 2574 | [[package]] 2575 | name = "rustybuzz" 2576 | version = "0.14.1" 2577 | source = "registry+https://github.com/rust-lang/crates.io-index" 2578 | checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c" 2579 | dependencies = [ 2580 | "bitflags 2.8.0", 2581 | "bytemuck", 2582 | "libm", 2583 | "smallvec", 2584 | "ttf-parser 0.21.1", 2585 | "unicode-bidi-mirroring", 2586 | "unicode-ccc", 2587 | "unicode-properties", 2588 | "unicode-script", 2589 | ] 2590 | 2591 | [[package]] 2592 | name = "same-file" 2593 | version = "1.0.6" 2594 | source = "registry+https://github.com/rust-lang/crates.io-index" 2595 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 2596 | dependencies = [ 2597 | "winapi-util", 2598 | ] 2599 | 2600 | [[package]] 2601 | name = "scoped-tls" 2602 | version = "1.0.1" 2603 | source = "registry+https://github.com/rust-lang/crates.io-index" 2604 | checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 2605 | 2606 | [[package]] 2607 | name = "scopeguard" 2608 | version = "1.2.0" 2609 | source = "registry+https://github.com/rust-lang/crates.io-index" 2610 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 2611 | 2612 | [[package]] 2613 | name = "sctk-adwaita" 2614 | version = "0.10.1" 2615 | source = "registry+https://github.com/rust-lang/crates.io-index" 2616 | checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" 2617 | dependencies = [ 2618 | "ab_glyph", 2619 | "log", 2620 | "memmap2", 2621 | "smithay-client-toolkit", 2622 | "tiny-skia", 2623 | ] 2624 | 2625 | [[package]] 2626 | name = "self_cell" 2627 | version = "1.1.0" 2628 | source = "registry+https://github.com/rust-lang/crates.io-index" 2629 | checksum = "c2fdfc24bc566f839a2da4c4295b82db7d25a24253867d5c64355abb5799bdbe" 2630 | 2631 | [[package]] 2632 | name = "serde" 2633 | version = "1.0.217" 2634 | source = "registry+https://github.com/rust-lang/crates.io-index" 2635 | checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" 2636 | dependencies = [ 2637 | "serde_derive", 2638 | ] 2639 | 2640 | [[package]] 2641 | name = "serde_derive" 2642 | version = "1.0.217" 2643 | source = "registry+https://github.com/rust-lang/crates.io-index" 2644 | checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" 2645 | dependencies = [ 2646 | "proc-macro2", 2647 | "quote", 2648 | "syn 2.0.96", 2649 | ] 2650 | 2651 | [[package]] 2652 | name = "serde_repr" 2653 | version = "0.1.19" 2654 | source = "registry+https://github.com/rust-lang/crates.io-index" 2655 | checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" 2656 | dependencies = [ 2657 | "proc-macro2", 2658 | "quote", 2659 | "syn 2.0.96", 2660 | ] 2661 | 2662 | [[package]] 2663 | name = "sha1" 2664 | version = "0.10.6" 2665 | source = "registry+https://github.com/rust-lang/crates.io-index" 2666 | checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 2667 | dependencies = [ 2668 | "cfg-if", 2669 | "cpufeatures", 2670 | "digest", 2671 | ] 2672 | 2673 | [[package]] 2674 | name = "shlex" 2675 | version = "1.3.0" 2676 | source = "registry+https://github.com/rust-lang/crates.io-index" 2677 | checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 2678 | 2679 | [[package]] 2680 | name = "signal-hook-registry" 2681 | version = "1.4.2" 2682 | source = "registry+https://github.com/rust-lang/crates.io-index" 2683 | checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" 2684 | dependencies = [ 2685 | "libc", 2686 | ] 2687 | 2688 | [[package]] 2689 | name = "simd-adler32" 2690 | version = "0.3.7" 2691 | source = "registry+https://github.com/rust-lang/crates.io-index" 2692 | checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" 2693 | 2694 | [[package]] 2695 | name = "siphasher" 2696 | version = "1.0.1" 2697 | source = "registry+https://github.com/rust-lang/crates.io-index" 2698 | checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" 2699 | 2700 | [[package]] 2701 | name = "skrifa" 2702 | version = "0.22.3" 2703 | source = "registry+https://github.com/rust-lang/crates.io-index" 2704 | checksum = "8e1c44ad1f6c5bdd4eefed8326711b7dbda9ea45dfd36068c427d332aa382cbe" 2705 | dependencies = [ 2706 | "bytemuck", 2707 | "read-fonts", 2708 | ] 2709 | 2710 | [[package]] 2711 | name = "slab" 2712 | version = "0.4.9" 2713 | source = "registry+https://github.com/rust-lang/crates.io-index" 2714 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 2715 | dependencies = [ 2716 | "autocfg", 2717 | ] 2718 | 2719 | [[package]] 2720 | name = "slotmap" 2721 | version = "1.0.7" 2722 | source = "registry+https://github.com/rust-lang/crates.io-index" 2723 | checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" 2724 | dependencies = [ 2725 | "version_check", 2726 | ] 2727 | 2728 | [[package]] 2729 | name = "smallvec" 2730 | version = "1.13.2" 2731 | source = "registry+https://github.com/rust-lang/crates.io-index" 2732 | checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" 2733 | 2734 | [[package]] 2735 | name = "smithay-client-toolkit" 2736 | version = "0.19.2" 2737 | source = "registry+https://github.com/rust-lang/crates.io-index" 2738 | checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" 2739 | dependencies = [ 2740 | "bitflags 2.8.0", 2741 | "calloop", 2742 | "calloop-wayland-source", 2743 | "cursor-icon", 2744 | "libc", 2745 | "log", 2746 | "memmap2", 2747 | "rustix", 2748 | "thiserror", 2749 | "wayland-backend", 2750 | "wayland-client", 2751 | "wayland-csd-frame", 2752 | "wayland-cursor", 2753 | "wayland-protocols", 2754 | "wayland-protocols-wlr", 2755 | "wayland-scanner", 2756 | "xkeysym", 2757 | ] 2758 | 2759 | [[package]] 2760 | name = "smithay-clipboard" 2761 | version = "0.7.2" 2762 | source = "registry+https://github.com/rust-lang/crates.io-index" 2763 | checksum = "cc8216eec463674a0e90f29e0ae41a4db573ec5b56b1c6c1c71615d249b6d846" 2764 | dependencies = [ 2765 | "libc", 2766 | "smithay-client-toolkit", 2767 | "wayland-backend", 2768 | ] 2769 | 2770 | [[package]] 2771 | name = "smol_str" 2772 | version = "0.2.2" 2773 | source = "registry+https://github.com/rust-lang/crates.io-index" 2774 | checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" 2775 | dependencies = [ 2776 | "serde", 2777 | ] 2778 | 2779 | [[package]] 2780 | name = "softbuffer" 2781 | version = "0.4.6" 2782 | source = "registry+https://github.com/rust-lang/crates.io-index" 2783 | checksum = "18051cdd562e792cad055119e0cdb2cfc137e44e3987532e0f9659a77931bb08" 2784 | dependencies = [ 2785 | "as-raw-xcb-connection", 2786 | "bytemuck", 2787 | "cfg_aliases 0.2.1", 2788 | "core-graphics 0.24.0", 2789 | "drm", 2790 | "fastrand", 2791 | "foreign-types", 2792 | "js-sys", 2793 | "log", 2794 | "memmap2", 2795 | "objc2", 2796 | "objc2-foundation", 2797 | "objc2-quartz-core", 2798 | "raw-window-handle", 2799 | "redox_syscall 0.5.8", 2800 | "rustix", 2801 | "tiny-xlib", 2802 | "wasm-bindgen", 2803 | "wayland-backend", 2804 | "wayland-client", 2805 | "wayland-sys", 2806 | "web-sys", 2807 | "windows-sys 0.59.0", 2808 | "x11rb", 2809 | ] 2810 | 2811 | [[package]] 2812 | name = "spirv" 2813 | version = "0.3.0+sdk-1.3.268.0" 2814 | source = "registry+https://github.com/rust-lang/crates.io-index" 2815 | checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" 2816 | dependencies = [ 2817 | "bitflags 2.8.0", 2818 | ] 2819 | 2820 | [[package]] 2821 | name = "static_assertions" 2822 | version = "1.1.0" 2823 | source = "registry+https://github.com/rust-lang/crates.io-index" 2824 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 2825 | 2826 | [[package]] 2827 | name = "strict-num" 2828 | version = "0.1.1" 2829 | source = "registry+https://github.com/rust-lang/crates.io-index" 2830 | checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" 2831 | 2832 | [[package]] 2833 | name = "svg_fmt" 2834 | version = "0.4.4" 2835 | source = "registry+https://github.com/rust-lang/crates.io-index" 2836 | checksum = "ce5d813d71d82c4cbc1742135004e4a79fd870214c155443451c139c9470a0aa" 2837 | 2838 | [[package]] 2839 | name = "swash" 2840 | version = "0.1.19" 2841 | source = "registry+https://github.com/rust-lang/crates.io-index" 2842 | checksum = "cbd59f3f359ddd2c95af4758c18270eddd9c730dde98598023cdabff472c2ca2" 2843 | dependencies = [ 2844 | "skrifa", 2845 | "yazi", 2846 | "zeno", 2847 | ] 2848 | 2849 | [[package]] 2850 | name = "syn" 2851 | version = "1.0.109" 2852 | source = "registry+https://github.com/rust-lang/crates.io-index" 2853 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 2854 | dependencies = [ 2855 | "proc-macro2", 2856 | "quote", 2857 | "unicode-ident", 2858 | ] 2859 | 2860 | [[package]] 2861 | name = "syn" 2862 | version = "2.0.96" 2863 | source = "registry+https://github.com/rust-lang/crates.io-index" 2864 | checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" 2865 | dependencies = [ 2866 | "proc-macro2", 2867 | "quote", 2868 | "unicode-ident", 2869 | ] 2870 | 2871 | [[package]] 2872 | name = "sys-locale" 2873 | version = "0.3.2" 2874 | source = "registry+https://github.com/rust-lang/crates.io-index" 2875 | checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" 2876 | dependencies = [ 2877 | "libc", 2878 | ] 2879 | 2880 | [[package]] 2881 | name = "tempfile" 2882 | version = "3.15.0" 2883 | source = "registry+https://github.com/rust-lang/crates.io-index" 2884 | checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" 2885 | dependencies = [ 2886 | "cfg-if", 2887 | "fastrand", 2888 | "getrandom", 2889 | "once_cell", 2890 | "rustix", 2891 | "windows-sys 0.59.0", 2892 | ] 2893 | 2894 | [[package]] 2895 | name = "termcolor" 2896 | version = "1.4.1" 2897 | source = "registry+https://github.com/rust-lang/crates.io-index" 2898 | checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" 2899 | dependencies = [ 2900 | "winapi-util", 2901 | ] 2902 | 2903 | [[package]] 2904 | name = "thiserror" 2905 | version = "1.0.69" 2906 | source = "registry+https://github.com/rust-lang/crates.io-index" 2907 | checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 2908 | dependencies = [ 2909 | "thiserror-impl", 2910 | ] 2911 | 2912 | [[package]] 2913 | name = "thiserror-impl" 2914 | version = "1.0.69" 2915 | source = "registry+https://github.com/rust-lang/crates.io-index" 2916 | checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 2917 | dependencies = [ 2918 | "proc-macro2", 2919 | "quote", 2920 | "syn 2.0.96", 2921 | ] 2922 | 2923 | [[package]] 2924 | name = "tiny-skia" 2925 | version = "0.11.4" 2926 | source = "registry+https://github.com/rust-lang/crates.io-index" 2927 | checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" 2928 | dependencies = [ 2929 | "arrayref", 2930 | "arrayvec", 2931 | "bytemuck", 2932 | "cfg-if", 2933 | "log", 2934 | "png", 2935 | "tiny-skia-path", 2936 | ] 2937 | 2938 | [[package]] 2939 | name = "tiny-skia-path" 2940 | version = "0.11.4" 2941 | source = "registry+https://github.com/rust-lang/crates.io-index" 2942 | checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" 2943 | dependencies = [ 2944 | "arrayref", 2945 | "bytemuck", 2946 | "strict-num", 2947 | ] 2948 | 2949 | [[package]] 2950 | name = "tiny-xlib" 2951 | version = "0.2.4" 2952 | source = "registry+https://github.com/rust-lang/crates.io-index" 2953 | checksum = "0324504befd01cab6e0c994f34b2ffa257849ee019d3fb3b64fb2c858887d89e" 2954 | dependencies = [ 2955 | "as-raw-xcb-connection", 2956 | "ctor-lite", 2957 | "libloading 0.8.6", 2958 | "pkg-config", 2959 | "tracing", 2960 | ] 2961 | 2962 | [[package]] 2963 | name = "tinyvec" 2964 | version = "1.8.1" 2965 | source = "registry+https://github.com/rust-lang/crates.io-index" 2966 | checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" 2967 | dependencies = [ 2968 | "tinyvec_macros", 2969 | ] 2970 | 2971 | [[package]] 2972 | name = "tinyvec_macros" 2973 | version = "0.1.1" 2974 | source = "registry+https://github.com/rust-lang/crates.io-index" 2975 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 2976 | 2977 | [[package]] 2978 | name = "toml_datetime" 2979 | version = "0.6.8" 2980 | source = "registry+https://github.com/rust-lang/crates.io-index" 2981 | checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" 2982 | 2983 | [[package]] 2984 | name = "toml_edit" 2985 | version = "0.22.22" 2986 | source = "registry+https://github.com/rust-lang/crates.io-index" 2987 | checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" 2988 | dependencies = [ 2989 | "indexmap", 2990 | "toml_datetime", 2991 | "winnow", 2992 | ] 2993 | 2994 | [[package]] 2995 | name = "tracing" 2996 | version = "0.1.41" 2997 | source = "registry+https://github.com/rust-lang/crates.io-index" 2998 | checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 2999 | dependencies = [ 3000 | "pin-project-lite", 3001 | "tracing-attributes", 3002 | "tracing-core", 3003 | ] 3004 | 3005 | [[package]] 3006 | name = "tracing-attributes" 3007 | version = "0.1.28" 3008 | source = "registry+https://github.com/rust-lang/crates.io-index" 3009 | checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" 3010 | dependencies = [ 3011 | "proc-macro2", 3012 | "quote", 3013 | "syn 2.0.96", 3014 | ] 3015 | 3016 | [[package]] 3017 | name = "tracing-core" 3018 | version = "0.1.33" 3019 | source = "registry+https://github.com/rust-lang/crates.io-index" 3020 | checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" 3021 | dependencies = [ 3022 | "once_cell", 3023 | ] 3024 | 3025 | [[package]] 3026 | name = "ttf-parser" 3027 | version = "0.20.0" 3028 | source = "registry+https://github.com/rust-lang/crates.io-index" 3029 | checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" 3030 | 3031 | [[package]] 3032 | name = "ttf-parser" 3033 | version = "0.21.1" 3034 | source = "registry+https://github.com/rust-lang/crates.io-index" 3035 | checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" 3036 | 3037 | [[package]] 3038 | name = "ttf-parser" 3039 | version = "0.25.1" 3040 | source = "registry+https://github.com/rust-lang/crates.io-index" 3041 | checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" 3042 | 3043 | [[package]] 3044 | name = "typenum" 3045 | version = "1.17.0" 3046 | source = "registry+https://github.com/rust-lang/crates.io-index" 3047 | checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 3048 | 3049 | [[package]] 3050 | name = "uds_windows" 3051 | version = "1.1.0" 3052 | source = "registry+https://github.com/rust-lang/crates.io-index" 3053 | checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" 3054 | dependencies = [ 3055 | "memoffset", 3056 | "tempfile", 3057 | "winapi", 3058 | ] 3059 | 3060 | [[package]] 3061 | name = "unicode-bidi" 3062 | version = "0.3.18" 3063 | source = "registry+https://github.com/rust-lang/crates.io-index" 3064 | checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" 3065 | 3066 | [[package]] 3067 | name = "unicode-bidi-mirroring" 3068 | version = "0.2.0" 3069 | source = "registry+https://github.com/rust-lang/crates.io-index" 3070 | checksum = "23cb788ffebc92c5948d0e997106233eeb1d8b9512f93f41651f52b6c5f5af86" 3071 | 3072 | [[package]] 3073 | name = "unicode-ccc" 3074 | version = "0.2.0" 3075 | source = "registry+https://github.com/rust-lang/crates.io-index" 3076 | checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656" 3077 | 3078 | [[package]] 3079 | name = "unicode-ident" 3080 | version = "1.0.14" 3081 | source = "registry+https://github.com/rust-lang/crates.io-index" 3082 | checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" 3083 | 3084 | [[package]] 3085 | name = "unicode-linebreak" 3086 | version = "0.1.5" 3087 | source = "registry+https://github.com/rust-lang/crates.io-index" 3088 | checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" 3089 | 3090 | [[package]] 3091 | name = "unicode-properties" 3092 | version = "0.1.3" 3093 | source = "registry+https://github.com/rust-lang/crates.io-index" 3094 | checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" 3095 | 3096 | [[package]] 3097 | name = "unicode-script" 3098 | version = "0.5.7" 3099 | source = "registry+https://github.com/rust-lang/crates.io-index" 3100 | checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f" 3101 | 3102 | [[package]] 3103 | name = "unicode-segmentation" 3104 | version = "1.12.0" 3105 | source = "registry+https://github.com/rust-lang/crates.io-index" 3106 | checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" 3107 | 3108 | [[package]] 3109 | name = "unicode-width" 3110 | version = "0.1.14" 3111 | source = "registry+https://github.com/rust-lang/crates.io-index" 3112 | checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" 3113 | 3114 | [[package]] 3115 | name = "unicode-xid" 3116 | version = "0.2.6" 3117 | source = "registry+https://github.com/rust-lang/crates.io-index" 3118 | checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" 3119 | 3120 | [[package]] 3121 | name = "version_check" 3122 | version = "0.9.5" 3123 | source = "registry+https://github.com/rust-lang/crates.io-index" 3124 | checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 3125 | 3126 | [[package]] 3127 | name = "walkdir" 3128 | version = "2.5.0" 3129 | source = "registry+https://github.com/rust-lang/crates.io-index" 3130 | checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 3131 | dependencies = [ 3132 | "same-file", 3133 | "winapi-util", 3134 | ] 3135 | 3136 | [[package]] 3137 | name = "wasi" 3138 | version = "0.11.0+wasi-snapshot-preview1" 3139 | source = "registry+https://github.com/rust-lang/crates.io-index" 3140 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 3141 | 3142 | [[package]] 3143 | name = "wasm-bindgen" 3144 | version = "0.2.100" 3145 | source = "registry+https://github.com/rust-lang/crates.io-index" 3146 | checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" 3147 | dependencies = [ 3148 | "cfg-if", 3149 | "once_cell", 3150 | "rustversion", 3151 | "wasm-bindgen-macro", 3152 | ] 3153 | 3154 | [[package]] 3155 | name = "wasm-bindgen-backend" 3156 | version = "0.2.100" 3157 | source = "registry+https://github.com/rust-lang/crates.io-index" 3158 | checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" 3159 | dependencies = [ 3160 | "bumpalo", 3161 | "log", 3162 | "proc-macro2", 3163 | "quote", 3164 | "syn 2.0.96", 3165 | "wasm-bindgen-shared", 3166 | ] 3167 | 3168 | [[package]] 3169 | name = "wasm-bindgen-futures" 3170 | version = "0.4.50" 3171 | source = "registry+https://github.com/rust-lang/crates.io-index" 3172 | checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" 3173 | dependencies = [ 3174 | "cfg-if", 3175 | "js-sys", 3176 | "once_cell", 3177 | "wasm-bindgen", 3178 | "web-sys", 3179 | ] 3180 | 3181 | [[package]] 3182 | name = "wasm-bindgen-macro" 3183 | version = "0.2.100" 3184 | source = "registry+https://github.com/rust-lang/crates.io-index" 3185 | checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" 3186 | dependencies = [ 3187 | "quote", 3188 | "wasm-bindgen-macro-support", 3189 | ] 3190 | 3191 | [[package]] 3192 | name = "wasm-bindgen-macro-support" 3193 | version = "0.2.100" 3194 | source = "registry+https://github.com/rust-lang/crates.io-index" 3195 | checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" 3196 | dependencies = [ 3197 | "proc-macro2", 3198 | "quote", 3199 | "syn 2.0.96", 3200 | "wasm-bindgen-backend", 3201 | "wasm-bindgen-shared", 3202 | ] 3203 | 3204 | [[package]] 3205 | name = "wasm-bindgen-shared" 3206 | version = "0.2.100" 3207 | source = "registry+https://github.com/rust-lang/crates.io-index" 3208 | checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" 3209 | dependencies = [ 3210 | "unicode-ident", 3211 | ] 3212 | 3213 | [[package]] 3214 | name = "wasm-timer" 3215 | version = "0.2.5" 3216 | source = "registry+https://github.com/rust-lang/crates.io-index" 3217 | checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" 3218 | dependencies = [ 3219 | "futures", 3220 | "js-sys", 3221 | "parking_lot 0.11.2", 3222 | "pin-utils", 3223 | "wasm-bindgen", 3224 | "wasm-bindgen-futures", 3225 | "web-sys", 3226 | ] 3227 | 3228 | [[package]] 3229 | name = "wayland-backend" 3230 | version = "0.3.7" 3231 | source = "registry+https://github.com/rust-lang/crates.io-index" 3232 | checksum = "056535ced7a150d45159d3a8dc30f91a2e2d588ca0b23f70e56033622b8016f6" 3233 | dependencies = [ 3234 | "cc", 3235 | "downcast-rs", 3236 | "rustix", 3237 | "scoped-tls", 3238 | "smallvec", 3239 | "wayland-sys", 3240 | ] 3241 | 3242 | [[package]] 3243 | name = "wayland-client" 3244 | version = "0.31.7" 3245 | source = "registry+https://github.com/rust-lang/crates.io-index" 3246 | checksum = "b66249d3fc69f76fd74c82cc319300faa554e9d865dab1f7cd66cc20db10b280" 3247 | dependencies = [ 3248 | "bitflags 2.8.0", 3249 | "rustix", 3250 | "wayland-backend", 3251 | "wayland-scanner", 3252 | ] 3253 | 3254 | [[package]] 3255 | name = "wayland-csd-frame" 3256 | version = "0.3.0" 3257 | source = "registry+https://github.com/rust-lang/crates.io-index" 3258 | checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" 3259 | dependencies = [ 3260 | "bitflags 2.8.0", 3261 | "cursor-icon", 3262 | "wayland-backend", 3263 | ] 3264 | 3265 | [[package]] 3266 | name = "wayland-cursor" 3267 | version = "0.31.7" 3268 | source = "registry+https://github.com/rust-lang/crates.io-index" 3269 | checksum = "32b08bc3aafdb0035e7fe0fdf17ba0c09c268732707dca4ae098f60cb28c9e4c" 3270 | dependencies = [ 3271 | "rustix", 3272 | "wayland-client", 3273 | "xcursor", 3274 | ] 3275 | 3276 | [[package]] 3277 | name = "wayland-protocols" 3278 | version = "0.32.5" 3279 | source = "registry+https://github.com/rust-lang/crates.io-index" 3280 | checksum = "7cd0ade57c4e6e9a8952741325c30bf82f4246885dca8bf561898b86d0c1f58e" 3281 | dependencies = [ 3282 | "bitflags 2.8.0", 3283 | "wayland-backend", 3284 | "wayland-client", 3285 | "wayland-scanner", 3286 | ] 3287 | 3288 | [[package]] 3289 | name = "wayland-protocols-plasma" 3290 | version = "0.3.5" 3291 | source = "registry+https://github.com/rust-lang/crates.io-index" 3292 | checksum = "9b31cab548ee68c7eb155517f2212049dc151f7cd7910c2b66abfd31c3ee12bd" 3293 | dependencies = [ 3294 | "bitflags 2.8.0", 3295 | "wayland-backend", 3296 | "wayland-client", 3297 | "wayland-protocols", 3298 | "wayland-scanner", 3299 | ] 3300 | 3301 | [[package]] 3302 | name = "wayland-protocols-wlr" 3303 | version = "0.3.5" 3304 | source = "registry+https://github.com/rust-lang/crates.io-index" 3305 | checksum = "782e12f6cd923c3c316130d56205ebab53f55d6666b7faddfad36cecaeeb4022" 3306 | dependencies = [ 3307 | "bitflags 2.8.0", 3308 | "wayland-backend", 3309 | "wayland-client", 3310 | "wayland-protocols", 3311 | "wayland-scanner", 3312 | ] 3313 | 3314 | [[package]] 3315 | name = "wayland-scanner" 3316 | version = "0.31.5" 3317 | source = "registry+https://github.com/rust-lang/crates.io-index" 3318 | checksum = "597f2001b2e5fc1121e3d5b9791d3e78f05ba6bfa4641053846248e3a13661c3" 3319 | dependencies = [ 3320 | "proc-macro2", 3321 | "quick-xml", 3322 | "quote", 3323 | ] 3324 | 3325 | [[package]] 3326 | name = "wayland-sys" 3327 | version = "0.31.5" 3328 | source = "registry+https://github.com/rust-lang/crates.io-index" 3329 | checksum = "efa8ac0d8e8ed3e3b5c9fc92c7881406a268e11555abe36493efabe649a29e09" 3330 | dependencies = [ 3331 | "dlib", 3332 | "log", 3333 | "once_cell", 3334 | "pkg-config", 3335 | ] 3336 | 3337 | [[package]] 3338 | name = "web-sys" 3339 | version = "0.3.77" 3340 | source = "registry+https://github.com/rust-lang/crates.io-index" 3341 | checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" 3342 | dependencies = [ 3343 | "js-sys", 3344 | "wasm-bindgen", 3345 | ] 3346 | 3347 | [[package]] 3348 | name = "web-time" 3349 | version = "1.1.0" 3350 | source = "registry+https://github.com/rust-lang/crates.io-index" 3351 | checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" 3352 | dependencies = [ 3353 | "js-sys", 3354 | "wasm-bindgen", 3355 | ] 3356 | 3357 | [[package]] 3358 | name = "wgpu" 3359 | version = "0.19.4" 3360 | source = "registry+https://github.com/rust-lang/crates.io-index" 3361 | checksum = "cbd7311dbd2abcfebaabf1841a2824ed7c8be443a0f29166e5d3c6a53a762c01" 3362 | dependencies = [ 3363 | "arrayvec", 3364 | "cfg-if", 3365 | "cfg_aliases 0.1.1", 3366 | "js-sys", 3367 | "log", 3368 | "naga", 3369 | "parking_lot 0.12.3", 3370 | "profiling", 3371 | "raw-window-handle", 3372 | "smallvec", 3373 | "static_assertions", 3374 | "wasm-bindgen", 3375 | "wasm-bindgen-futures", 3376 | "web-sys", 3377 | "wgpu-core", 3378 | "wgpu-hal", 3379 | "wgpu-types", 3380 | ] 3381 | 3382 | [[package]] 3383 | name = "wgpu-core" 3384 | version = "0.19.4" 3385 | source = "registry+https://github.com/rust-lang/crates.io-index" 3386 | checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a" 3387 | dependencies = [ 3388 | "arrayvec", 3389 | "bit-vec", 3390 | "bitflags 2.8.0", 3391 | "cfg_aliases 0.1.1", 3392 | "codespan-reporting", 3393 | "indexmap", 3394 | "log", 3395 | "naga", 3396 | "once_cell", 3397 | "parking_lot 0.12.3", 3398 | "profiling", 3399 | "raw-window-handle", 3400 | "rustc-hash 1.1.0", 3401 | "smallvec", 3402 | "thiserror", 3403 | "web-sys", 3404 | "wgpu-hal", 3405 | "wgpu-types", 3406 | ] 3407 | 3408 | [[package]] 3409 | name = "wgpu-hal" 3410 | version = "0.19.5" 3411 | source = "registry+https://github.com/rust-lang/crates.io-index" 3412 | checksum = "bfabcfc55fd86611a855816326b2d54c3b2fd7972c27ce414291562650552703" 3413 | dependencies = [ 3414 | "android_system_properties", 3415 | "arrayvec", 3416 | "ash", 3417 | "bit-set", 3418 | "bitflags 2.8.0", 3419 | "block", 3420 | "cfg_aliases 0.1.1", 3421 | "core-graphics-types 0.1.3", 3422 | "d3d12", 3423 | "glow", 3424 | "glutin_wgl_sys", 3425 | "gpu-alloc", 3426 | "gpu-allocator", 3427 | "gpu-descriptor", 3428 | "hassle-rs", 3429 | "js-sys", 3430 | "khronos-egl", 3431 | "libc", 3432 | "libloading 0.8.6", 3433 | "log", 3434 | "metal", 3435 | "naga", 3436 | "ndk-sys 0.5.0+25.2.9519653", 3437 | "objc", 3438 | "once_cell", 3439 | "parking_lot 0.12.3", 3440 | "profiling", 3441 | "range-alloc", 3442 | "raw-window-handle", 3443 | "renderdoc-sys", 3444 | "rustc-hash 1.1.0", 3445 | "smallvec", 3446 | "thiserror", 3447 | "wasm-bindgen", 3448 | "web-sys", 3449 | "wgpu-types", 3450 | "winapi", 3451 | ] 3452 | 3453 | [[package]] 3454 | name = "wgpu-types" 3455 | version = "0.19.2" 3456 | source = "registry+https://github.com/rust-lang/crates.io-index" 3457 | checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" 3458 | dependencies = [ 3459 | "bitflags 2.8.0", 3460 | "js-sys", 3461 | "web-sys", 3462 | ] 3463 | 3464 | [[package]] 3465 | name = "widestring" 3466 | version = "1.1.0" 3467 | source = "registry+https://github.com/rust-lang/crates.io-index" 3468 | checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" 3469 | 3470 | [[package]] 3471 | name = "winapi" 3472 | version = "0.3.9" 3473 | source = "registry+https://github.com/rust-lang/crates.io-index" 3474 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 3475 | dependencies = [ 3476 | "winapi-i686-pc-windows-gnu", 3477 | "winapi-x86_64-pc-windows-gnu", 3478 | ] 3479 | 3480 | [[package]] 3481 | name = "winapi-i686-pc-windows-gnu" 3482 | version = "0.4.0" 3483 | source = "registry+https://github.com/rust-lang/crates.io-index" 3484 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 3485 | 3486 | [[package]] 3487 | name = "winapi-util" 3488 | version = "0.1.9" 3489 | source = "registry+https://github.com/rust-lang/crates.io-index" 3490 | checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" 3491 | dependencies = [ 3492 | "windows-sys 0.59.0", 3493 | ] 3494 | 3495 | [[package]] 3496 | name = "winapi-x86_64-pc-windows-gnu" 3497 | version = "0.4.0" 3498 | source = "registry+https://github.com/rust-lang/crates.io-index" 3499 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 3500 | 3501 | [[package]] 3502 | name = "window_clipboard" 3503 | version = "0.4.1" 3504 | source = "registry+https://github.com/rust-lang/crates.io-index" 3505 | checksum = "f6d692d46038c433f9daee7ad8757e002a4248c20b0a3fbc991d99521d3bcb6d" 3506 | dependencies = [ 3507 | "clipboard-win", 3508 | "clipboard_macos", 3509 | "clipboard_wayland", 3510 | "clipboard_x11", 3511 | "raw-window-handle", 3512 | "thiserror", 3513 | ] 3514 | 3515 | [[package]] 3516 | name = "windows" 3517 | version = "0.52.0" 3518 | source = "registry+https://github.com/rust-lang/crates.io-index" 3519 | checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" 3520 | dependencies = [ 3521 | "windows-core", 3522 | "windows-targets 0.52.6", 3523 | ] 3524 | 3525 | [[package]] 3526 | name = "windows-core" 3527 | version = "0.52.0" 3528 | source = "registry+https://github.com/rust-lang/crates.io-index" 3529 | checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" 3530 | dependencies = [ 3531 | "windows-targets 0.52.6", 3532 | ] 3533 | 3534 | [[package]] 3535 | name = "windows-sys" 3536 | version = "0.45.0" 3537 | source = "registry+https://github.com/rust-lang/crates.io-index" 3538 | checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 3539 | dependencies = [ 3540 | "windows-targets 0.42.2", 3541 | ] 3542 | 3543 | [[package]] 3544 | name = "windows-sys" 3545 | version = "0.52.0" 3546 | source = "registry+https://github.com/rust-lang/crates.io-index" 3547 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 3548 | dependencies = [ 3549 | "windows-targets 0.52.6", 3550 | ] 3551 | 3552 | [[package]] 3553 | name = "windows-sys" 3554 | version = "0.59.0" 3555 | source = "registry+https://github.com/rust-lang/crates.io-index" 3556 | checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 3557 | dependencies = [ 3558 | "windows-targets 0.52.6", 3559 | ] 3560 | 3561 | [[package]] 3562 | name = "windows-targets" 3563 | version = "0.42.2" 3564 | source = "registry+https://github.com/rust-lang/crates.io-index" 3565 | checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" 3566 | dependencies = [ 3567 | "windows_aarch64_gnullvm 0.42.2", 3568 | "windows_aarch64_msvc 0.42.2", 3569 | "windows_i686_gnu 0.42.2", 3570 | "windows_i686_msvc 0.42.2", 3571 | "windows_x86_64_gnu 0.42.2", 3572 | "windows_x86_64_gnullvm 0.42.2", 3573 | "windows_x86_64_msvc 0.42.2", 3574 | ] 3575 | 3576 | [[package]] 3577 | name = "windows-targets" 3578 | version = "0.48.5" 3579 | source = "registry+https://github.com/rust-lang/crates.io-index" 3580 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 3581 | dependencies = [ 3582 | "windows_aarch64_gnullvm 0.48.5", 3583 | "windows_aarch64_msvc 0.48.5", 3584 | "windows_i686_gnu 0.48.5", 3585 | "windows_i686_msvc 0.48.5", 3586 | "windows_x86_64_gnu 0.48.5", 3587 | "windows_x86_64_gnullvm 0.48.5", 3588 | "windows_x86_64_msvc 0.48.5", 3589 | ] 3590 | 3591 | [[package]] 3592 | name = "windows-targets" 3593 | version = "0.52.6" 3594 | source = "registry+https://github.com/rust-lang/crates.io-index" 3595 | checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 3596 | dependencies = [ 3597 | "windows_aarch64_gnullvm 0.52.6", 3598 | "windows_aarch64_msvc 0.52.6", 3599 | "windows_i686_gnu 0.52.6", 3600 | "windows_i686_gnullvm", 3601 | "windows_i686_msvc 0.52.6", 3602 | "windows_x86_64_gnu 0.52.6", 3603 | "windows_x86_64_gnullvm 0.52.6", 3604 | "windows_x86_64_msvc 0.52.6", 3605 | ] 3606 | 3607 | [[package]] 3608 | name = "windows_aarch64_gnullvm" 3609 | version = "0.42.2" 3610 | source = "registry+https://github.com/rust-lang/crates.io-index" 3611 | checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 3612 | 3613 | [[package]] 3614 | name = "windows_aarch64_gnullvm" 3615 | version = "0.48.5" 3616 | source = "registry+https://github.com/rust-lang/crates.io-index" 3617 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 3618 | 3619 | [[package]] 3620 | name = "windows_aarch64_gnullvm" 3621 | version = "0.52.6" 3622 | source = "registry+https://github.com/rust-lang/crates.io-index" 3623 | checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 3624 | 3625 | [[package]] 3626 | name = "windows_aarch64_msvc" 3627 | version = "0.42.2" 3628 | source = "registry+https://github.com/rust-lang/crates.io-index" 3629 | checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 3630 | 3631 | [[package]] 3632 | name = "windows_aarch64_msvc" 3633 | version = "0.48.5" 3634 | source = "registry+https://github.com/rust-lang/crates.io-index" 3635 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 3636 | 3637 | [[package]] 3638 | name = "windows_aarch64_msvc" 3639 | version = "0.52.6" 3640 | source = "registry+https://github.com/rust-lang/crates.io-index" 3641 | checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 3642 | 3643 | [[package]] 3644 | name = "windows_i686_gnu" 3645 | version = "0.42.2" 3646 | source = "registry+https://github.com/rust-lang/crates.io-index" 3647 | checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 3648 | 3649 | [[package]] 3650 | name = "windows_i686_gnu" 3651 | version = "0.48.5" 3652 | source = "registry+https://github.com/rust-lang/crates.io-index" 3653 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 3654 | 3655 | [[package]] 3656 | name = "windows_i686_gnu" 3657 | version = "0.52.6" 3658 | source = "registry+https://github.com/rust-lang/crates.io-index" 3659 | checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 3660 | 3661 | [[package]] 3662 | name = "windows_i686_gnullvm" 3663 | version = "0.52.6" 3664 | source = "registry+https://github.com/rust-lang/crates.io-index" 3665 | checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 3666 | 3667 | [[package]] 3668 | name = "windows_i686_msvc" 3669 | version = "0.42.2" 3670 | source = "registry+https://github.com/rust-lang/crates.io-index" 3671 | checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 3672 | 3673 | [[package]] 3674 | name = "windows_i686_msvc" 3675 | version = "0.48.5" 3676 | source = "registry+https://github.com/rust-lang/crates.io-index" 3677 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 3678 | 3679 | [[package]] 3680 | name = "windows_i686_msvc" 3681 | version = "0.52.6" 3682 | source = "registry+https://github.com/rust-lang/crates.io-index" 3683 | checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 3684 | 3685 | [[package]] 3686 | name = "windows_x86_64_gnu" 3687 | version = "0.42.2" 3688 | source = "registry+https://github.com/rust-lang/crates.io-index" 3689 | checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 3690 | 3691 | [[package]] 3692 | name = "windows_x86_64_gnu" 3693 | version = "0.48.5" 3694 | source = "registry+https://github.com/rust-lang/crates.io-index" 3695 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 3696 | 3697 | [[package]] 3698 | name = "windows_x86_64_gnu" 3699 | version = "0.52.6" 3700 | source = "registry+https://github.com/rust-lang/crates.io-index" 3701 | checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 3702 | 3703 | [[package]] 3704 | name = "windows_x86_64_gnullvm" 3705 | version = "0.42.2" 3706 | source = "registry+https://github.com/rust-lang/crates.io-index" 3707 | checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 3708 | 3709 | [[package]] 3710 | name = "windows_x86_64_gnullvm" 3711 | version = "0.48.5" 3712 | source = "registry+https://github.com/rust-lang/crates.io-index" 3713 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 3714 | 3715 | [[package]] 3716 | name = "windows_x86_64_gnullvm" 3717 | version = "0.52.6" 3718 | source = "registry+https://github.com/rust-lang/crates.io-index" 3719 | checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 3720 | 3721 | [[package]] 3722 | name = "windows_x86_64_msvc" 3723 | version = "0.42.2" 3724 | source = "registry+https://github.com/rust-lang/crates.io-index" 3725 | checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 3726 | 3727 | [[package]] 3728 | name = "windows_x86_64_msvc" 3729 | version = "0.48.5" 3730 | source = "registry+https://github.com/rust-lang/crates.io-index" 3731 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 3732 | 3733 | [[package]] 3734 | name = "windows_x86_64_msvc" 3735 | version = "0.52.6" 3736 | source = "registry+https://github.com/rust-lang/crates.io-index" 3737 | checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 3738 | 3739 | [[package]] 3740 | name = "winit" 3741 | version = "0.30.8" 3742 | source = "registry+https://github.com/rust-lang/crates.io-index" 3743 | checksum = "f5d74280aabb958072864bff6cfbcf9025cf8bfacdde5e32b5e12920ef703b0f" 3744 | dependencies = [ 3745 | "ahash 0.8.11", 3746 | "android-activity", 3747 | "atomic-waker", 3748 | "bitflags 2.8.0", 3749 | "block2", 3750 | "bytemuck", 3751 | "calloop", 3752 | "cfg_aliases 0.2.1", 3753 | "concurrent-queue", 3754 | "core-foundation 0.9.4", 3755 | "core-graphics 0.23.2", 3756 | "cursor-icon", 3757 | "dpi", 3758 | "js-sys", 3759 | "libc", 3760 | "memmap2", 3761 | "ndk", 3762 | "objc2", 3763 | "objc2-app-kit", 3764 | "objc2-foundation", 3765 | "objc2-ui-kit", 3766 | "orbclient", 3767 | "percent-encoding", 3768 | "pin-project", 3769 | "raw-window-handle", 3770 | "redox_syscall 0.4.1", 3771 | "rustix", 3772 | "sctk-adwaita", 3773 | "smithay-client-toolkit", 3774 | "smol_str", 3775 | "tracing", 3776 | "unicode-segmentation", 3777 | "wasm-bindgen", 3778 | "wasm-bindgen-futures", 3779 | "wayland-backend", 3780 | "wayland-client", 3781 | "wayland-protocols", 3782 | "wayland-protocols-plasma", 3783 | "web-sys", 3784 | "web-time", 3785 | "windows-sys 0.52.0", 3786 | "x11-dl", 3787 | "x11rb", 3788 | "xkbcommon-dl", 3789 | ] 3790 | 3791 | [[package]] 3792 | name = "winnow" 3793 | version = "0.6.24" 3794 | source = "registry+https://github.com/rust-lang/crates.io-index" 3795 | checksum = "c8d71a593cc5c42ad7876e2c1fda56f314f3754c084128833e64f1345ff8a03a" 3796 | dependencies = [ 3797 | "memchr", 3798 | ] 3799 | 3800 | [[package]] 3801 | name = "winreg" 3802 | version = "0.10.1" 3803 | source = "registry+https://github.com/rust-lang/crates.io-index" 3804 | checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" 3805 | dependencies = [ 3806 | "winapi", 3807 | ] 3808 | 3809 | [[package]] 3810 | name = "x11-dl" 3811 | version = "2.21.0" 3812 | source = "registry+https://github.com/rust-lang/crates.io-index" 3813 | checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" 3814 | dependencies = [ 3815 | "libc", 3816 | "once_cell", 3817 | "pkg-config", 3818 | ] 3819 | 3820 | [[package]] 3821 | name = "x11rb" 3822 | version = "0.13.1" 3823 | source = "registry+https://github.com/rust-lang/crates.io-index" 3824 | checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" 3825 | dependencies = [ 3826 | "as-raw-xcb-connection", 3827 | "gethostname", 3828 | "libc", 3829 | "libloading 0.8.6", 3830 | "once_cell", 3831 | "rustix", 3832 | "x11rb-protocol", 3833 | ] 3834 | 3835 | [[package]] 3836 | name = "x11rb-protocol" 3837 | version = "0.13.1" 3838 | source = "registry+https://github.com/rust-lang/crates.io-index" 3839 | checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" 3840 | 3841 | [[package]] 3842 | name = "xcursor" 3843 | version = "0.3.8" 3844 | source = "registry+https://github.com/rust-lang/crates.io-index" 3845 | checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" 3846 | 3847 | [[package]] 3848 | name = "xdg-home" 3849 | version = "1.3.0" 3850 | source = "registry+https://github.com/rust-lang/crates.io-index" 3851 | checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" 3852 | dependencies = [ 3853 | "libc", 3854 | "windows-sys 0.59.0", 3855 | ] 3856 | 3857 | [[package]] 3858 | name = "xkbcommon-dl" 3859 | version = "0.4.2" 3860 | source = "registry+https://github.com/rust-lang/crates.io-index" 3861 | checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" 3862 | dependencies = [ 3863 | "bitflags 2.8.0", 3864 | "dlib", 3865 | "log", 3866 | "once_cell", 3867 | "xkeysym", 3868 | ] 3869 | 3870 | [[package]] 3871 | name = "xkeysym" 3872 | version = "0.2.1" 3873 | source = "registry+https://github.com/rust-lang/crates.io-index" 3874 | checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" 3875 | 3876 | [[package]] 3877 | name = "xml-rs" 3878 | version = "0.8.25" 3879 | source = "registry+https://github.com/rust-lang/crates.io-index" 3880 | checksum = "c5b940ebc25896e71dd073bad2dbaa2abfe97b0a391415e22ad1326d9c54e3c4" 3881 | 3882 | [[package]] 3883 | name = "yazi" 3884 | version = "0.1.6" 3885 | source = "registry+https://github.com/rust-lang/crates.io-index" 3886 | checksum = "c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1" 3887 | 3888 | [[package]] 3889 | name = "zbus" 3890 | version = "4.4.0" 3891 | source = "registry+https://github.com/rust-lang/crates.io-index" 3892 | checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" 3893 | dependencies = [ 3894 | "async-broadcast", 3895 | "async-executor", 3896 | "async-fs", 3897 | "async-io", 3898 | "async-lock", 3899 | "async-process", 3900 | "async-recursion", 3901 | "async-task", 3902 | "async-trait", 3903 | "blocking", 3904 | "enumflags2", 3905 | "event-listener", 3906 | "futures-core", 3907 | "futures-sink", 3908 | "futures-util", 3909 | "hex", 3910 | "nix", 3911 | "ordered-stream", 3912 | "rand", 3913 | "serde", 3914 | "serde_repr", 3915 | "sha1", 3916 | "static_assertions", 3917 | "tracing", 3918 | "uds_windows", 3919 | "windows-sys 0.52.0", 3920 | "xdg-home", 3921 | "zbus_macros", 3922 | "zbus_names", 3923 | "zvariant", 3924 | ] 3925 | 3926 | [[package]] 3927 | name = "zbus_macros" 3928 | version = "4.4.0" 3929 | source = "registry+https://github.com/rust-lang/crates.io-index" 3930 | checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" 3931 | dependencies = [ 3932 | "proc-macro-crate", 3933 | "proc-macro2", 3934 | "quote", 3935 | "syn 2.0.96", 3936 | "zvariant_utils", 3937 | ] 3938 | 3939 | [[package]] 3940 | name = "zbus_names" 3941 | version = "3.0.0" 3942 | source = "registry+https://github.com/rust-lang/crates.io-index" 3943 | checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" 3944 | dependencies = [ 3945 | "serde", 3946 | "static_assertions", 3947 | "zvariant", 3948 | ] 3949 | 3950 | [[package]] 3951 | name = "zeno" 3952 | version = "0.2.3" 3953 | source = "registry+https://github.com/rust-lang/crates.io-index" 3954 | checksum = "dd15f8e0dbb966fd9245e7498c7e9e5055d9e5c8b676b95bd67091cd11a1e697" 3955 | 3956 | [[package]] 3957 | name = "zerocopy" 3958 | version = "0.7.35" 3959 | source = "registry+https://github.com/rust-lang/crates.io-index" 3960 | checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" 3961 | dependencies = [ 3962 | "byteorder", 3963 | "zerocopy-derive", 3964 | ] 3965 | 3966 | [[package]] 3967 | name = "zerocopy-derive" 3968 | version = "0.7.35" 3969 | source = "registry+https://github.com/rust-lang/crates.io-index" 3970 | checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" 3971 | dependencies = [ 3972 | "proc-macro2", 3973 | "quote", 3974 | "syn 2.0.96", 3975 | ] 3976 | 3977 | [[package]] 3978 | name = "zvariant" 3979 | version = "4.2.0" 3980 | source = "registry+https://github.com/rust-lang/crates.io-index" 3981 | checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" 3982 | dependencies = [ 3983 | "endi", 3984 | "enumflags2", 3985 | "serde", 3986 | "static_assertions", 3987 | "zvariant_derive", 3988 | ] 3989 | 3990 | [[package]] 3991 | name = "zvariant_derive" 3992 | version = "4.2.0" 3993 | source = "registry+https://github.com/rust-lang/crates.io-index" 3994 | checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" 3995 | dependencies = [ 3996 | "proc-macro-crate", 3997 | "proc-macro2", 3998 | "quote", 3999 | "syn 2.0.96", 4000 | "zvariant_utils", 4001 | ] 4002 | 4003 | [[package]] 4004 | name = "zvariant_utils" 4005 | version = "2.1.0" 4006 | source = "registry+https://github.com/rust-lang/crates.io-index" 4007 | checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" 4008 | dependencies = [ 4009 | "proc-macro2", 4010 | "quote", 4011 | "syn 2.0.96", 4012 | ] 4013 | --------------------------------------------------------------------------------