From e7d99cf4918e7bd8cb0fe91e3e256db41410974e Mon Sep 17 00:00:00 2001 From: saying Date: Tue, 28 May 2024 23:09:32 +0800 Subject: [PATCH 01/13] feat(lcode): tui press a can add last test case. --- CHANGELOG.md | 2 +- crates/lcode-config/src/config/read_config.rs | 2 +- crates/lcode-config/src/keymap.rs | 16 +++-- crates/lcode-config/tests/config_work.rs | 2 +- crates/lcode/src/app/dispatch/handle_key.rs | 6 +- crates/lcode/src/app/dispatch/next_key.rs | 2 +- crates/lcode/src/app/edit/cmds/submit.rs | 9 +++ crates/lcode/src/app/edit/mod.rs | 5 ++ crates/lcode/src/app/impl_app/edit_qs.rs | 1 + crates/lcode/src/app/info/mod.rs | 4 +- crates/lcode/src/app/inner.rs | 32 +++++++++ crates/lcode/src/mytui/helper.rs | 3 +- crates/lcode/src/mytui/ui/edit_ui.rs | 18 ++--- crates/lcode/src/mytui/ui/filter_topic.rs | 71 ++++++------------- crates/lcode/src/mytui/ui/info.rs | 24 ++----- crates/lcode/src/mytui/ui/select_ui.rs | 18 ++--- crates/leetcode-api/src/dao/save_info.rs | 52 +++++++++----- .../src/leetcode/impl_lc/get_qs.rs | 2 +- .../src/leetcode/impl_lc/judge.rs | 44 +++++++----- crates/leetcode-api/src/render/run_res.rs | 14 ++-- 20 files changed, 176 insertions(+), 151 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 677ec64..8a18922 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- leetcode-api: add api `add_last_test_case`. +- lcode: when submit not pass test case can add last test case. ### Perf diff --git a/crates/lcode-config/src/config/read_config.rs b/crates/lcode-config/src/config/read_config.rs index 7fae4ad..a4c4310 100644 --- a/crates/lcode-config/src/config/read_config.rs +++ b/crates/lcode-config/src/config/read_config.rs @@ -84,7 +84,7 @@ pub fn get_user_conf() -> Result { let key: TuiKeyMap = toml::from_str(&key) .into_diagnostic() .context("get keymap failed")?; - user.keymap.add_keymap(key.keymap); + user.keymap.add_keymap(key.map_set); Ok(user) } diff --git a/crates/lcode-config/src/keymap.rs b/crates/lcode-config/src/keymap.rs index 0914708..c22e65e 100644 --- a/crates/lcode-config/src/keymap.rs +++ b/crates/lcode-config/src/keymap.rs @@ -46,7 +46,9 @@ actions!( (SYNC_INDEX, "sync_index"); - (ESCAPE, "escape") + (ESCAPE, "escape"); + + (ADD_TEST_CASE, "add_test_case") ); #[derive(Clone)] @@ -93,16 +95,16 @@ impl Hash for KeyMap { #[derive(Debug)] pub struct TuiKeyMap { #[serde(default)] - pub keymap: HashSet, + pub map_set: HashSet, } impl TuiKeyMap { /// Add extra keymap pub fn add_keymap(&mut self, add: HashSet) { for ele in &add { - self.keymap.remove(ele); + self.map_set.remove(ele); } - self.keymap.extend(add); + self.map_set.extend(add); } } @@ -165,11 +167,13 @@ impl Default for TuiKeyMap { (vec![Key::new(CTRL, kc('p'))], TOGGLE_MENU, "Show or hide menu(only edit)"); (vec![Key::new(CTRL, kc('t'))], TOGGLE_TEST_RES, "Show or hide test result (only tab1/edit)"); (vec![Key::new(CTRL, kc('s'))], TOGGLE_SUBMIT_RES, "Show or hide submit result (only tab1/edit)"); - (vec![Key::new(NO_CONTROL, enter)], TOGGLE_CURSOR, "Trigger cursor item, in edit pop menu will active button (add or rm topic_tags, or goto tab1/edit)") + (vec![Key::new(NO_CONTROL, enter)], TOGGLE_CURSOR, "Trigger cursor item, in edit pop menu will active button (add or rm topic_tags, or goto tab1/edit)"); + + (vec![Key::new(NO_CONTROL, kc('a'))], ADD_TEST_CASE, "When submit error can add test case. (tab1/edit)") ); let keymap = HashSet::from(mps); - Self { keymap } + Self { map_set: keymap } } } diff --git a/crates/lcode-config/tests/config_work.rs b/crates/lcode-config/tests/config_work.rs index de3f5ca..c167285 100644 --- a/crates/lcode-config/tests/config_work.rs +++ b/crates/lcode-config/tests/config_work.rs @@ -43,5 +43,5 @@ fn macos_path() { #[test] fn get_conf_work() { // _ = &USER_CONFIG.config; - dbg!(&G_USER_CONFIG.keymap.keymap); + dbg!(&G_USER_CONFIG.keymap.map_set); } diff --git a/crates/lcode/src/app/dispatch/handle_key.rs b/crates/lcode/src/app/dispatch/handle_key.rs index 6ec6248..422ba3c 100644 --- a/crates/lcode/src/app/dispatch/handle_key.rs +++ b/crates/lcode/src/app/dispatch/handle_key.rs @@ -57,7 +57,7 @@ impl<'app_lf> App<'app_lf> { } return; } - for KeyMap { keys, action: r#do, .. } in &G_USER_CONFIG.keymap.keymap { + for KeyMap { keys, action: r#do, .. } in &G_USER_CONFIG.keymap.map_set { if keys.is_empty() || keys[0] != keyevent.into() { continue; } @@ -91,6 +91,10 @@ impl<'app_lf> App<'app_lf> { }, TuiIndex::Edit if matches!(self.edit.code_block.mode, TuiMode::OutEdit) => match action { + ADD_TEST_CASE if self.edit.add_test_case() && self.edit.submit.show => { + self.add_test_case() + }, + UP => self.edit.vertical_scroll_k(), DOWN => self.edit.vertical_scroll_j(), LEFT => self.edit.horizontal_scroll_h(), diff --git a/crates/lcode/src/app/dispatch/next_key.rs b/crates/lcode/src/app/dispatch/next_key.rs index 615a09f..fe87ec3 100644 --- a/crates/lcode/src/app/dispatch/next_key.rs +++ b/crates/lcode/src/app/dispatch/next_key.rs @@ -18,7 +18,7 @@ impl NextKey { self.times = 1; self.keymaps = G_USER_CONFIG .keymap - .keymap + .map_set .iter() .filter(|v| v.keys.len() > 1 && v.keys[0] == keyevent.into()) .collect(); diff --git a/crates/lcode/src/app/edit/cmds/submit.rs b/crates/lcode/src/app/edit/cmds/submit.rs index b6a0c41..d685cea 100644 --- a/crates/lcode/src/app/edit/cmds/submit.rs +++ b/crates/lcode/src/app/edit/cmds/submit.rs @@ -15,9 +15,18 @@ pub struct SubmitState { pub hori_scroll: usize, pub row_len: usize, + + pub need_add_test_case: bool, } impl SubmitState { + pub fn not_need_add(&mut self) { + self.need_add_test_case = false; + } + pub const fn need_add(&self) -> bool { + self.need_add_test_case + } + pub fn toggle(&mut self) { self.show = !self.show; } diff --git a/crates/lcode/src/app/edit/mod.rs b/crates/lcode/src/app/edit/mod.rs index fb3d6ae..546565e 100644 --- a/crates/lcode/src/app/edit/mod.rs +++ b/crates/lcode/src/app/edit/mod.rs @@ -35,6 +35,11 @@ impl<'tab1> EditCode<'tab1> { pub fn start_edit_tui(&mut self) -> bool { self.code_block.start_edit_tui() } + + /// when true, mean can add a new test case + pub const fn add_test_case(&self) ->bool{ + self.submit.need_add() + } } // Show only one pop view every time. diff --git a/crates/lcode/src/app/impl_app/edit_qs.rs b/crates/lcode/src/app/impl_app/edit_qs.rs index 8b3a827..9d500af 100644 --- a/crates/lcode/src/app/impl_app/edit_qs.rs +++ b/crates/lcode/src/app/impl_app/edit_qs.rs @@ -125,6 +125,7 @@ impl<'app_lf> App<'app_lf> { self.render(); } pub fn submit_done(&mut self, res: RunResult) { + self.edit.submit.need_add_test_case = !res.last_testcase.is_empty(); self.edit.submit.content = res; self.edit.submit.open(); diff --git a/crates/lcode/src/app/info/mod.rs b/crates/lcode/src/app/info/mod.rs index c77c482..e20b54e 100644 --- a/crates/lcode/src/app/info/mod.rs +++ b/crates/lcode/src/app/info/mod.rs @@ -23,14 +23,14 @@ pub struct Info<'tab3> { // keymaps impl<'tab3> Info<'tab3> { pub fn new() -> Self { - let mut pat = Vec::with_capacity(G_USER_CONFIG.keymap.keymap.len() + 1); + let mut pat = Vec::with_capacity(G_USER_CONFIG.keymap.map_set.len() + 1); pat.push(ListItem::new( "⭐ Give the project a star, cursor here Press Enter", )); let a = G_USER_CONFIG .keymap - .keymap + .map_set .iter() .map(|v| ListItem::new(v.to_string())); pat.extend(a); diff --git a/crates/lcode/src/app/inner.rs b/crates/lcode/src/app/inner.rs index c1c68f0..6e18aeb 100644 --- a/crates/lcode/src/app/inner.rs +++ b/crates/lcode/src/app/inner.rs @@ -39,6 +39,38 @@ pub struct App<'app> { pub events: EventsHandler, } +impl<'app_lf> App<'app_lf> { + pub fn add_test_case(&mut self) -> bool { + let id = self + .edit + .submit + .content + .question_id + .parse() + .expect("submit res question id parse error"); + + // SAFETY: `last_testcase` field can live on whole app + let case: &'static str = unsafe { + std::mem::transmute( + self.edit + .submit + .content + .last_testcase + .as_str(), + ) + }; + tokio::spawn(async move { + glob_leetcode() + .await + .add_test_case(id, case) + .await + .ok(); + }); + self.edit.submit.not_need_add(); + + true + } +} impl<'app_lf> App<'app_lf> { /// edit cursor qs with outer editor, for select tab pub async fn select_edit_cur_qs(&mut self) -> Result<()> { diff --git a/crates/lcode/src/mytui/helper.rs b/crates/lcode/src/mytui/helper.rs index ab0d005..f7f1e5d 100644 --- a/crates/lcode/src/mytui/helper.rs +++ b/crates/lcode/src/mytui/helper.rs @@ -70,8 +70,9 @@ pub fn title_block<'a, T>(title: T) -> Block<'a> where T: Into>, { - let title = Title::from(title).alignment(Alignment::Center); + let title = Title::from(title); Block::default() .title(title) .borders(Borders::ALL) + .title_alignment(Alignment::Center) } diff --git a/crates/lcode/src/mytui/ui/edit_ui.rs b/crates/lcode/src/mytui/ui/edit_ui.rs index f99e73f..37309c6 100644 --- a/crates/lcode/src/mytui/ui/edit_ui.rs +++ b/crates/lcode/src/mytui/ui/edit_ui.rs @@ -129,11 +129,11 @@ pub fn draw_pop_submit(f: &mut Frame, app: &mut App, area: Rect) { let area = centered_rect_percent(60, 60, area); f.render_widget(Clear, area); - let block = title_block(Line::from(vec![ - " exit, j/k up/down ".into(), - "Submit 🌊".set_style(G_THEME.edit.submit_title), - ])) - .border_style(G_THEME.edit.submit_border); + let mut title = vec!["Submit 🌊".set_style(G_THEME.edit.submit_title)]; + if app.edit.submit.need_add() { + title.push("Can add last test case πŸ§ͺ".red()); + } + let block = title_block(Line::from(title)); f.render_widget(block, area); let layout = helper::nested_rect(area, 1, 1, 1, 1); @@ -232,12 +232,8 @@ pub fn draw_pop_test(f: &mut Frame, app: &mut App, area: Rect) { pub fn draw_save_state(f: &mut Frame, _app: &App, area: Rect) { let area = centered_rect_percent(30, 20, area); - let para = Paragraph::new("save code done").block( - Block::default() - .borders(Borders::ALL) - .title("default press `esc` close") - .title_alignment(Alignment::Center), - ); + let para = + Paragraph::new("save code done").block(helper::title_block("default press `esc` close")); f.render_widget(Clear, area); f.render_widget(para, area); diff --git a/crates/lcode/src/mytui/ui/filter_topic.rs b/crates/lcode/src/mytui/ui/filter_topic.rs index 19648fc..108c066 100644 --- a/crates/lcode/src/mytui/ui/filter_topic.rs +++ b/crates/lcode/src/mytui/ui/filter_topic.rs @@ -30,23 +30,20 @@ pub fn draw_difficults(f: &mut Frame, app: &mut App, area: Rect) { let list = List::new(items) .block( - Block::default() - .border_style(style) - .borders(Borders::ALL) - .title( - if app - .topic - .difficulty - .user_diff - .is_empty() - { - "Difficulty" - } - else { - &app.topic.difficulty.user_diff - }, - ) - .title_alignment(Alignment::Center), + helper::title_block( + if app + .topic + .difficulty + .user_diff + .is_empty() + { + "Difficulty" + } + else { + &app.topic.difficulty.user_diff + }, + ) + .border_style(style), ) .highlight_style(G_THEME.topic.list_highlight); f.render_stateful_widget(list, area, &mut app.topic.difficulty.list_state); @@ -121,13 +118,7 @@ pub fn draw_all_topic_tags(f: &mut Frame, app: &mut App, area: Rect) { G_THEME.topic.inactive_border }; let list = List::new(items) - .block( - Block::default() - .border_style(style) - .borders(Borders::ALL) - .title("All Topic Tag") - .title_alignment(Alignment::Center), - ) + .block(helper::title_block("All Topic Tag").border_style(style)) .highlight_style(G_THEME.topic.list_highlight); // .highlight_symbol(">>"); f.render_stateful_widget(list, area, &mut app.topic.topic.topic_tags_state); @@ -160,13 +151,7 @@ pub fn draw_user_topic(f: &mut Frame, app: &mut App, area: Rect) { G_THEME.topic.inactive_border }; let list = List::new(items) - .block( - Block::default() - .border_style(style) - .borders(Borders::ALL) - .title("User Topic Tag") - .title_alignment(Alignment::Center), - ) + .block(helper::title_block("User Topic Tag").border_style(style)) .highlight_style(G_THEME.topic.list_highlight); // .highlight_symbol(">>"); f.render_stateful_widget(list, area, &mut app.topic.topic.user_topic_tags_state); @@ -189,13 +174,7 @@ pub fn draw_filtered_qs(f: &mut Frame, app: &mut App, area: Rect) { }; let count = items.len(); let list = List::new(items) - .block( - Block::default() - .title(format!("Questions count: {}", count)) - .title_alignment(Alignment::Center) - .border_style(style) - .borders(Borders::ALL), - ) + .block(helper::title_block(format!("Questions count: {}", count)).border_style(style)) .highlight_style(G_THEME.topic.list_highlight); // .highlight_symbol(">>"); f.render_stateful_widget( @@ -215,11 +194,7 @@ pub fn draw_sync_progress_new(f: &mut Frame, app: &App, area: Rect) { G_THEME.topic.label, ); let gauge = Gauge::default() - .block( - Block::default() - .title("waiting sync ……") - .borders(Borders::ALL), - ) + .block(helper::title_block("waiting sync ……")) .gauge_style(G_THEME.topic.gauge) .label(label) .ratio(app.topic.sync_bar.percent); @@ -247,11 +222,9 @@ pub fn draw_input_line(f: &mut Frame, app: &mut App, area: Rect) { G_THEME.topic.text_line_outedit, ), }; - app.topic.inputline.text_line.set_block( - Block::default() - .borders(Borders::ALL) - .set_style(sty) - .title(title), - ); + app.topic + .inputline + .text_line + .set_block(helper::title_block(title).set_style(sty)); f.render_widget(app.topic.inputline.text_line.widget(), area); } diff --git a/crates/lcode/src/mytui/ui/info.rs b/crates/lcode/src/mytui/ui/info.rs index 2090d8e..74ff098 100644 --- a/crates/lcode/src/mytui/ui/info.rs +++ b/crates/lcode/src/mytui/ui/info.rs @@ -1,7 +1,7 @@ use lcode_config::global::G_THEME; use ratatui::{prelude::*, widgets::*}; -use crate::app::inner::App; +use crate::{app::inner::App, mytui::helper}; pub fn draw_info(f: &mut Frame, app: &mut App, area: Rect) { let chunks = Layout::default() @@ -60,27 +60,13 @@ pub fn draw_info(f: &mut Frame, app: &mut App, area: Rect) { let pass_data = vec![ListItem::new("🐾 Pass Info")] .into_iter() .chain(pass_data); - let pass_info_list = List::new(pass_data).block( - Block::default() - .borders(Borders::ALL) - .title_alignment(Alignment::Center) - .title("Pass Info"), - ); + let pass_info_list = List::new(pass_data).block(helper::title_block("Pass Info")); - let user_info_list = List::new(items.into_iter().map(ListItem::new)).block( - Block::default() - .borders(Borders::ALL) - .title_alignment(Alignment::Center) - .title("User Info"), - ); + let user_info_list = + List::new(items.into_iter().map(ListItem::new)).block(helper::title_block("User Info")); let keymap_list = List::new(app.info.keymap.items.clone()) - .block( - Block::default() - .borders(Borders::ALL) - .title_alignment(Alignment::Center) - .title("Keymaps"), - ) + .block(helper::title_block("Keymaps")) .highlight_style(G_THEME.info.list_highlight) .highlight_symbol(">>"); diff --git a/crates/lcode/src/mytui/ui/select_ui.rs b/crates/lcode/src/mytui/ui/select_ui.rs index b42674f..dff78b0 100644 --- a/crates/lcode/src/mytui/ui/select_ui.rs +++ b/crates/lcode/src/mytui/ui/select_ui.rs @@ -5,7 +5,7 @@ use rayon::prelude::*; use crate::{ app::inner::App, mytui::{ - helper::{bottom_rect, centered_rect_percent}, + helper::{self, bottom_rect, centered_rect_percent}, TuiMode, }, }; @@ -55,10 +55,9 @@ pub fn draw_input_line(f: &mut Frame, app: &mut App, area: Rect) { .inputline .text_line .set_block( - Block::default() - .borders(Borders::ALL) + helper::title_block(title) .set_style(sty) - .title(title), + .title_alignment(Alignment::Left), ); f.render_widget(app.select.inputline.text_line.widget(), area); @@ -128,9 +127,8 @@ pub fn draw_table(f: &mut Frame, app: &mut App, area: Rect) { let items = Table::new(items, width) .header(header) .block( - Block::default() - .borders(Borders::ALL) - .title(format!("Sum: {}", app.select.qs_state.filtered_qs.len())), + helper::title_block(format!("Sum: {}", app.select.qs_state.filtered_qs.len())) + .title_alignment(Alignment::Left), ) .highlight_style(G_THEME.select.highlight_style) .highlight_symbol(""); @@ -145,11 +143,7 @@ pub fn draw_sync_progress(f: &mut Frame, app: &mut App, area: Rect) { G_THEME.select.label, ); let gauge = Gauge::default() - .block( - Block::default() - .title("waiting sync ……") - .borders(Borders::ALL), - ) + .block(helper::title_block("waiting sync ……")) .gauge_style(G_THEME.select.gauge) .label(label) .ratio(app.select.sync_bar.percent); diff --git a/crates/leetcode-api/src/dao/save_info.rs b/crates/leetcode-api/src/dao/save_info.rs index 4842ce6..2b150a1 100644 --- a/crates/leetcode-api/src/dao/save_info.rs +++ b/crates/leetcode-api/src/dao/save_info.rs @@ -1,4 +1,7 @@ -use std::{ops::Not, path::PathBuf}; +use std::{ + ops::Not, + path::{Path, PathBuf}, +}; use lcode_config::global::G_USER_CONFIG; use miette::{IntoDiagnostic, Result}; @@ -27,17 +30,23 @@ pub struct FileInfo { } impl FileInfo { + async fn rest_file(path: impl AsRef) -> Result { + OpenOptions::new() + .create(true) + .truncate(true) + .write(true) + .open(path) + .await + .into_diagnostic() + } + /// When submit have testcase failed, can call it. pub async fn append_test_case(&self, case: &str) -> Result<()> { if case.is_empty() { return Ok(()); } - let mut f = OpenOptions::new() - .append(true) - .open(&self.test_case_path) - .await - .into_diagnostic()?; + let mut f = Self::rest_file(&self.test_case_path).await?; f.write_all(b"\n") .await @@ -45,6 +54,20 @@ impl FileInfo { f.write_all(case.as_bytes()) .await .into_diagnostic()?; + + Ok(()) + } + + pub async fn reset_test_case(&self, case: &str) -> Result<()> { + if case.is_empty() { + return Ok(()); + } + + let mut f = Self::rest_file(&self.test_case_path).await?; + f.write_all(case.as_bytes()) + .await + .into_diagnostic()?; + Ok(()) } } @@ -88,7 +111,7 @@ impl FileInfo { }) } - /// Write a question's `content`, `code` and `test_case` to file + /// Refresh a question's `content`, `code` and `test_case` to file pub async fn write_to_file(&self, detail: &Question) -> Result<()> { let content = detail.to_md_str(true); @@ -190,21 +213,12 @@ impl FileInfo { .into_diagnostic() .expect("create_dir_all failed"); - let mut file = OpenOptions::new() - .create(true) - .truncate(true) - .write(true) - .read(true) - .open(&path) - .await - .into_diagnostic()?; - file.write_all(val.as_bytes()) + let mut f = Self::rest_file(&path).await?; + f.write_all(val.as_bytes()) .await .into_diagnostic()?; - file.sync_all() - .await - .into_diagnostic()?; + f.sync_all().await.into_diagnostic()?; } Ok(()) } diff --git a/crates/leetcode-api/src/leetcode/impl_lc/get_qs.rs b/crates/leetcode-api/src/leetcode/impl_lc/get_qs.rs index f1b71f5..af9343e 100644 --- a/crates/leetcode-api/src/leetcode/impl_lc/get_qs.rs +++ b/crates/leetcode-api/src/leetcode/impl_lc/get_qs.rs @@ -163,7 +163,7 @@ impl LeetCode { /// Get the details of the problem, and if it's in the cache, use it. /// But not write data to file. - async fn get_qs_detail_no_w( + pub async fn get_qs_detail_no_w( &self, idslug: IdSlug, force: bool, diff --git a/crates/leetcode-api/src/leetcode/impl_lc/judge.rs b/crates/leetcode-api/src/leetcode/impl_lc/judge.rs index 225cec7..a6b95d1 100644 --- a/crates/leetcode-api/src/leetcode/impl_lc/judge.rs +++ b/crates/leetcode-api/src/leetcode/impl_lc/judge.rs @@ -20,6 +20,32 @@ use crate::{ Json, }; +impl LeetCode { + pub async fn add_test_case(&self, id: u32, case: &str) -> Result<()> { + if case.is_empty() { + return Ok(()); + } + let idx = Query::get_question_index(&IdSlug::Id(id)).await?; + + let info = FileInfo::build(&idx).await?; + info.append_test_case(case).await?; + + Ok(()) + } + + pub async fn reset_test_case(&self, id: u32) -> Result<()> { + let idx = Query::get_question_index(&IdSlug::Id(id)).await?; + let (_, detail) = self + .get_qs_detail_no_w(IdSlug::Id(id), false) + .await?; + let info = FileInfo::build(&idx).await?; + info.reset_test_case(&detail.example_testcases) + .await?; + + Ok(()) + } +} + impl LeetCode { /// submit code by id or slug, once submit one question /// @@ -91,24 +117,6 @@ impl LeetCode { ) .build()) } - pub async fn add_last_test_case(&self, submit_res: &RunResult) -> Result<()> { - let case = &submit_res.last_testcase; - if case.is_empty() { - return Ok(()); - } - let pb = Query::get_question_index(&IdSlug::Id( - submit_res - .question_id - .parse() - .expect("submit res question id parse error"), - )) - .await?; - - let info = FileInfo::build(&pb).await?; - info.append_test_case(case).await?; - - Ok(()) - } /// Get all submission results for a question pub async fn all_submit_res(&self, idslug: IdSlug) -> Result { diff --git a/crates/leetcode-api/src/render/run_res.rs b/crates/leetcode-api/src/render/run_res.rs index 8580b46..28fb1b0 100644 --- a/crates/leetcode-api/src/render/run_res.rs +++ b/crates/leetcode-api/src/render/run_res.rs @@ -41,14 +41,12 @@ impl RunResult { pub fn end_tui_text(&self) -> Vec { let mut status_msg_id = vec![]; if !self.last_testcase.is_empty() { - let last_case = vec![vec![ - " β€’ Last Testcases: ".into(), - self.last_testcase - .as_str() - .bold() - .cyan(), - ] - .into()]; + let lines = self + .last_testcase + .split('\n') + .map(|v| vec![v.bold().cyan()].into()); + let mut last_case = vec![vec![" β€’ Last Testcases: ".into()].into()]; + last_case.extend(lines); status_msg_id.extend(last_case); } if !self.full_compile_error.is_empty() { From e823ec6d4b59ab56ee2c79e760f9907a4163ea13 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Tue, 28 May 2024 15:26:36 +0000 Subject: [PATCH 02/13] fmt: with nightly rustfmt --- crates/lcode/src/app/edit/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/lcode/src/app/edit/mod.rs b/crates/lcode/src/app/edit/mod.rs index 546565e..f9f648d 100644 --- a/crates/lcode/src/app/edit/mod.rs +++ b/crates/lcode/src/app/edit/mod.rs @@ -37,7 +37,7 @@ impl<'tab1> EditCode<'tab1> { } /// when true, mean can add a new test case - pub const fn add_test_case(&self) ->bool{ + pub const fn add_test_case(&self) -> bool { self.submit.need_add() } } From 5228ae384bc4d77ea6cb78962c52960e99645afc Mon Sep 17 00:00:00 2001 From: saying Date: Mon, 3 Jun 2024 05:16:18 +0800 Subject: [PATCH 03/13] fix(add_test_case): abort when have a new submit. --- crates/lcode/src/app/edit/cmds/submit.rs | 3 ++- crates/lcode/src/app/edit/mod.rs | 1 - crates/lcode/src/app/inner.rs | 3 ++- crates/lcode/src/mytui/mod.rs | 4 ++++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/crates/lcode/src/app/edit/cmds/submit.rs b/crates/lcode/src/app/edit/cmds/submit.rs index d685cea..cd9bc98 100644 --- a/crates/lcode/src/app/edit/cmds/submit.rs +++ b/crates/lcode/src/app/edit/cmds/submit.rs @@ -1,7 +1,6 @@ use leetcode_api::leetcode::resps::run_res::RunResult; use ratatui::widgets::ScrollbarState; -#[derive(Clone)] #[derive(Debug)] #[derive(Default)] pub struct SubmitState { @@ -17,6 +16,8 @@ pub struct SubmitState { pub row_len: usize, pub need_add_test_case: bool, + + pub add_case_handle: Option>, } impl SubmitState { diff --git a/crates/lcode/src/app/edit/mod.rs b/crates/lcode/src/app/edit/mod.rs index f9f648d..f1790d0 100644 --- a/crates/lcode/src/app/edit/mod.rs +++ b/crates/lcode/src/app/edit/mod.rs @@ -6,7 +6,6 @@ use tui_textarea::{Input, Key}; use self::cmds::{button, codeblock, content, submit, test}; // tab1 edit -#[derive(Clone)] #[derive(Debug)] #[derive(Default)] pub struct EditCode<'tab1> { diff --git a/crates/lcode/src/app/inner.rs b/crates/lcode/src/app/inner.rs index 6e18aeb..ee96463 100644 --- a/crates/lcode/src/app/inner.rs +++ b/crates/lcode/src/app/inner.rs @@ -59,13 +59,14 @@ impl<'app_lf> App<'app_lf> { .as_str(), ) }; - tokio::spawn(async move { + let hd = tokio::spawn(async move { glob_leetcode() .await .add_test_case(id, case) .await .ok(); }); + self.edit.submit.add_case_handle = Some(hd); self.edit.submit.not_need_add(); true diff --git a/crates/lcode/src/mytui/mod.rs b/crates/lcode/src/mytui/mod.rs index 1ea3a21..d066594 100644 --- a/crates/lcode/src/mytui/mod.rs +++ b/crates/lcode/src/mytui/mod.rs @@ -31,6 +31,10 @@ pub async fn run() -> Result<()> { }, UserEvent::UserInfo(info) => app.get_status_done(*info), UserEvent::SubmitDone(s_res) => { + if let Some(hd) = app.edit.submit.add_case_handle.take() { + // abort add test case, because last test case may change + hd.abort(); + } // update info if s_res.total_correct == s_res.total_testcases { app.user_info_and_checkin(); From 2ef9413a520bf424a0f296c6493723ea04178c88 Mon Sep 17 00:00:00 2001 From: saying Date: Mon, 3 Jun 2024 06:46:16 +0800 Subject: [PATCH 04/13] refactor(add_test_case): delete unsafe code --- Cargo.lock | 109 +++++++++-------------- crates/lcode/src/app/edit/cmds/submit.rs | 2 - crates/lcode/src/app/inner.rs | 22 ++--- crates/lcode/src/mytui/mod.rs | 4 - 4 files changed, 53 insertions(+), 84 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 97c7a89..a016808 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ "gimli", ] @@ -194,16 +194,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", - "event-listener-strategy 0.5.2", + "event-listener-strategy", "futures-core", "pin-project-lite", ] [[package]] name = "async-compression" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c90a406b4495d129f00461241616194cb8a032c8d1c53c657f0961d5f8e0498" +checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5" dependencies = [ "brotli", "futures-core", @@ -234,17 +234,17 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.2" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" +checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" dependencies = [ - "async-lock 3.3.0", + "async-lock 3.4.0", "cfg-if", "concurrent-queue", "futures-io", "futures-lite 2.3.0", "parking", - "polling 3.7.0", + "polling 3.7.1", "rustix 0.38.34", "slab", "tracing", @@ -262,12 +262,12 @@ dependencies = [ [[package]] name = "async-lock" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 4.0.3", - "event-listener-strategy 0.4.0", + "event-listener 5.3.1", + "event-listener-strategy", "pin-project-lite", ] @@ -301,12 +301,12 @@ dependencies = [ [[package]] name = "async-signal" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afe66191c335039c7bb78f99dc7520b0cbb166b3a1cb33a03f53d8a1c6f2afda" +checksum = "329972aa325176e89114919f2a80fdae4f4c040f66a370b1a1159c6c0f94e7aa" dependencies = [ - "async-io 2.3.2", - "async-lock 3.3.0", + "async-io 2.3.3", + "async-lock 3.4.0", "atomic-waker", "cfg-if", "futures-core", @@ -379,9 +379,9 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "17c6a35df3749d2e8bb1b7b21a976d82b15548788d2735b9d82f329268f71a11" dependencies = [ "addr2line", "cc", @@ -1112,43 +1112,22 @@ dependencies = [ [[package]] name = "event-listener" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener" -version = "5.3.0" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" dependencies = [ "concurrent-queue", "parking", "pin-project-lite", ] -[[package]] -name = "event-listener-strategy" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" -dependencies = [ - "event-listener 4.0.3", - "pin-project-lite", -] - [[package]] name = "event-listener-strategy" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ - "event-listener 5.3.0", + "event-listener 5.3.1", "pin-project-lite", ] @@ -1387,9 +1366,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "h2" @@ -1594,9 +1573,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d8d52be92d09acc2e01dddb7fde3ad983fc6489c7db4837e605bc3fca4cb63e" +checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" dependencies = [ "bytes", "futures-channel", @@ -2278,9 +2257,9 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "b8ec7ab813848ba4522158d5517a6093db1ded27575b070f4177b8d12b41db5e" dependencies = [ "memchr", ] @@ -2572,9 +2551,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "464db0c665917b13ebb5d453ccdec4add5658ee1adc7affc7677615356a8afaf" +checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" dependencies = [ "atomic-waker", "fastrand 2.1.0", @@ -2605,9 +2584,9 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.0" +version = "3.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645493cf344456ef24219d02a768cf1fb92ddf8c92161679ae3d91b91a637be3" +checksum = "5e6a007746f34ed64099e88783b0ae369eaa3da6392868ba262e2af9b8fbaea1" dependencies = [ "cfg-if", "concurrent-queue", @@ -2694,9 +2673,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.84" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6" +checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" dependencies = [ "unicode-ident", ] @@ -3601,11 +3580,11 @@ dependencies = [ [[package]] name = "strum_macros" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946" +checksum = "f7993a8e3a9e88a00351486baae9522c91b123a088f76469e5bd5cc17198ea87" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "proc-macro2", "quote", "rustversion", @@ -3833,9 +3812,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.37.0" +version = "1.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" dependencies = [ "backtrace", "bytes", @@ -3853,9 +3832,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", @@ -3939,7 +3918,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.8", + "winnow 0.6.9", ] [[package]] @@ -4582,9 +4561,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" +checksum = "86c949fede1d13936a99f14fafd3e76fd642b556dd2ce96287fbe2e0151bfac6" dependencies = [ "memchr", ] diff --git a/crates/lcode/src/app/edit/cmds/submit.rs b/crates/lcode/src/app/edit/cmds/submit.rs index cd9bc98..d7942ba 100644 --- a/crates/lcode/src/app/edit/cmds/submit.rs +++ b/crates/lcode/src/app/edit/cmds/submit.rs @@ -16,8 +16,6 @@ pub struct SubmitState { pub row_len: usize, pub need_add_test_case: bool, - - pub add_case_handle: Option>, } impl SubmitState { diff --git a/crates/lcode/src/app/inner.rs b/crates/lcode/src/app/inner.rs index ee96463..4a3c8bf 100644 --- a/crates/lcode/src/app/inner.rs +++ b/crates/lcode/src/app/inner.rs @@ -49,24 +49,20 @@ impl<'app_lf> App<'app_lf> { .parse() .expect("submit res question id parse error"); - // SAFETY: `last_testcase` field can live on whole app - let case: &'static str = unsafe { - std::mem::transmute( - self.edit - .submit - .content - .last_testcase - .as_str(), - ) - }; - let hd = tokio::spawn(async move { + let case = self + .edit + .submit + .content + .last_testcase + .clone(); + + tokio::spawn(async move { glob_leetcode() .await - .add_test_case(id, case) + .add_test_case(id, &case) .await .ok(); }); - self.edit.submit.add_case_handle = Some(hd); self.edit.submit.not_need_add(); true diff --git a/crates/lcode/src/mytui/mod.rs b/crates/lcode/src/mytui/mod.rs index d066594..1ea3a21 100644 --- a/crates/lcode/src/mytui/mod.rs +++ b/crates/lcode/src/mytui/mod.rs @@ -31,10 +31,6 @@ pub async fn run() -> Result<()> { }, UserEvent::UserInfo(info) => app.get_status_done(*info), UserEvent::SubmitDone(s_res) => { - if let Some(hd) = app.edit.submit.add_case_handle.take() { - // abort add test case, because last test case may change - hd.abort(); - } // update info if s_res.total_correct == s_res.total_testcases { app.user_info_and_checkin(); From 80c313e01f8e47378cc16ddc87045ce90d335dd4 Mon Sep 17 00:00:00 2001 From: saying Date: Thu, 6 Jun 2024 21:14:32 +0800 Subject: [PATCH 05/13] refactor(index display): more useful width tweak. --- crates/leetcode-api/src/entities/index.rs | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/crates/leetcode-api/src/entities/index.rs b/crates/leetcode-api/src/entities/index.rs index d4ecf39..14146b3 100644 --- a/crates/leetcode-api/src/entities/index.rs +++ b/crates/leetcode-api/src/entities/index.rs @@ -97,26 +97,24 @@ impl Display for Model { _ => " Unknown".blue(), }; - let mut widthid = 14; - let mut count = 0; + let mut id_width = 14; for ch in self.frontend_question_id.chars() { - if UnicodeWidthChar::width(ch).unwrap_or_default() == 2 { - count += 1; + match UnicodeWidthChar::width(ch).unwrap_or_default() { + 0 | 1 => {}, + w => id_width -= w - 1, } } - widthid -= count; - let mut widtit = 66; - let mut count1 = 0; + let mut tit_wid = 66; for ch in self.question_title.chars() { - if UnicodeWidthChar::width(ch).unwrap_or_default() == 2 { - count1 += 1; + match UnicodeWidthChar::width(ch).unwrap_or_default() { + 0 | 1 => {}, + w => tit_wid -= w - 1, } } - widtit -= count1; format!( - "πŸ†”[{id:07}]|{fid:widthid$}|{cg:11}|πŸ‡Ή: {tit:widtit$}|Pass: {percent:.2}%|PaidOnly: \ + "πŸ†”[{id:07}]|{fid:id_width$}|{cg:11}|πŸ‡Ή: {tit:tit_wid$}|Pass: {percent:.2}%|PaidOnly: \ {po:6}|{diff:8}|{st}", fid = self.frontend_question_id, id = self.question_id, From 5d3c28917d93e4813fff6ef803875f96a1630cc8 Mon Sep 17 00:00:00 2001 From: saying Date: Thu, 6 Jun 2024 21:39:44 +0800 Subject: [PATCH 06/13] fix(add_last_case): set it append. ui(add_last_case): add info. --- crates/lcode/src/mytui/ui/edit_ui.rs | 2 +- crates/leetcode-api/src/dao/save_info.rs | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/crates/lcode/src/mytui/ui/edit_ui.rs b/crates/lcode/src/mytui/ui/edit_ui.rs index 37309c6..1848912 100644 --- a/crates/lcode/src/mytui/ui/edit_ui.rs +++ b/crates/lcode/src/mytui/ui/edit_ui.rs @@ -131,7 +131,7 @@ pub fn draw_pop_submit(f: &mut Frame, app: &mut App, area: Rect) { let mut title = vec!["Submit 🌊".set_style(G_THEME.edit.submit_title)]; if app.edit.submit.need_add() { - title.push("Can add last test case πŸ§ͺ".red()); + title.push("Can add last test case, default press `a` πŸ§ͺ".red()); } let block = title_block(Line::from(title)); f.render_widget(block, area); diff --git a/crates/leetcode-api/src/dao/save_info.rs b/crates/leetcode-api/src/dao/save_info.rs index 2b150a1..0bdf204 100644 --- a/crates/leetcode-api/src/dao/save_info.rs +++ b/crates/leetcode-api/src/dao/save_info.rs @@ -39,6 +39,14 @@ impl FileInfo { .await .into_diagnostic() } + async fn append_file(path: impl AsRef) -> Result { + OpenOptions::new() + .create(true) + .append(true) + .open(path) + .await + .into_diagnostic() + } /// When submit have testcase failed, can call it. pub async fn append_test_case(&self, case: &str) -> Result<()> { @@ -46,7 +54,7 @@ impl FileInfo { return Ok(()); } - let mut f = Self::rest_file(&self.test_case_path).await?; + let mut f = Self::append_file(&self.test_case_path).await?; f.write_all(b"\n") .await From 459ffb5b7f527b25e6fd74f1d26d6b0f0e20dc9d Mon Sep 17 00:00:00 2001 From: saying Date: Mon, 10 Jun 2024 15:27:59 +0800 Subject: [PATCH 07/13] perf(editor): improve --- crates/lcode/cargo/default.toml | 7 ++++++ crates/lcode/src/editor.rs | 41 +++++++++++++++------------------ 2 files changed, 26 insertions(+), 22 deletions(-) create mode 100644 crates/lcode/cargo/default.toml diff --git a/crates/lcode/cargo/default.toml b/crates/lcode/cargo/default.toml new file mode 100644 index 0000000..4776cbf --- /dev/null +++ b/crates/lcode/cargo/default.toml @@ -0,0 +1,7 @@ +[package] +name = "my-leetcode" +version = "0.1.0" +edition = "2021" + +[dependencies] +rand = { version = "0.8.5" } diff --git a/crates/lcode/src/editor.rs b/crates/lcode/src/editor.rs index a4a17f1..5df3f9a 100644 --- a/crates/lcode/src/editor.rs +++ b/crates/lcode/src/editor.rs @@ -1,6 +1,5 @@ use std::process::Command; -use futures::StreamExt; use lcode_config::global::{G_CONFIG_PATH, G_LOG_PATH, G_USER_CONFIG}; use leetcode_api::{ dao::{query::Query, save_info}, @@ -41,39 +40,37 @@ pub async fn integr_cargo(id: &str, code_path: &str) -> Result<()> { let metadata = fs::metadata(&cargo_path) .await .into_diagnostic()?; - if metadata.len() == 0 { - f.write_all( - r#"[package] -name = "my-leetcode" -version = "0.1.0" -edition = "2021" - -[dependencies] -rand = { version = "0.8.5" } -"# - .as_bytes(), - ) - .await - .into_diagnostic()?; + if metadata.len() == 0 { + f.write_all(include_bytes!("../cargo/default.toml")) + .await + .into_diagnostic()?; + // return early + return append_bin(id, code_path, &mut f).await; } let cargo_str = fs::read_to_string(&cargo_path) .await .into_diagnostic()?; - let cont = futures::stream::iter(cargo_str.split('\n')) - .any(|f| async { f.contains(&format!("\"{id}\"")) }) - .await; + + let cont = cargo_str + .split('\n') + .any(|f| f.contains(&format!("\"{id}\""))); if !cont { - let append = format!("[[bin]]\nname = \"{}\"\npath = \"./{}\"\n", id, code_path); - f.write_all(append.as_bytes()) - .await - .into_diagnostic()?; + append_bin(id, code_path, &mut f).await?; } Ok(()) } +async fn append_bin(id: &str, code_path: &str, f: &mut fs::File) -> Result<(), miette::Error> { + let append = format!("\n[[bin]]\nname = \"{}\"\npath = \"./{}\"", id, code_path); + f.write_all(append.as_bytes()) + .await + .into_diagnostic()?; + Ok(()) +} + #[derive(Clone, Copy)] #[derive(Debug)] #[derive(Default)] From 9ca1bc05fce0dce9b226e9e96c859893f644fbb2 Mon Sep 17 00:00:00 2001 From: saying Date: Mon, 10 Jun 2024 16:05:21 +0800 Subject: [PATCH 08/13] docs(CHANGELOG): tweak --- CHANGELOG.md | 4 ++-- crates/lcode/src/editor.rs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a18922..d7ad491 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,13 +14,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Perf -- avoid unnecessary render and filter. +- Avoid unnecessary render and filter. ## [0.9.1] - 2024-05-18 ### Fixed -Tui: submit panel can't vertical scroll. +- Tui: submit panel can't vertical scroll. ## [0.9.0] - 2024-05-14 diff --git a/crates/lcode/src/editor.rs b/crates/lcode/src/editor.rs index 5df3f9a..086ff1f 100644 --- a/crates/lcode/src/editor.rs +++ b/crates/lcode/src/editor.rs @@ -120,7 +120,7 @@ impl Editor { .front() .map_or("vim", |v| v.as_str()); - if editor.contains("vim") { + if editor == "vim" || editor == "nvim" { ed.extend([ code_path, "-c".to_owned(), From 0f1b4e9b70b5d1eb9a407391e5e7693b085bbccc Mon Sep 17 00:00:00 2001 From: saying Date: Tue, 11 Jun 2024 14:40:45 +0800 Subject: [PATCH 09/13] refactor(editor): use BufReader. --- Cargo.lock | 460 ++++++++++++++++++++++++++----------- crates/lcode/src/editor.rs | 25 +- 2 files changed, 338 insertions(+), 147 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a016808..2b0adb3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -27,18 +27,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "aes" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" -dependencies = [ - "cfg-if", - "cipher 0.3.0", - "cpufeatures", - "opaque-debug", -] - [[package]] name = "aes" version = "0.8.4" @@ -46,7 +34,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", - "cipher 0.4.4", + "cipher", "cpufeatures", ] @@ -57,8 +45,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" dependencies = [ "aead", - "aes 0.8.4", - "cipher 0.4.4", + "aes", + "cipher", "ctr", "ghash", "subtle", @@ -160,9 +148,9 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" +checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" dependencies = [ "windows-sys 0.52.0", ] @@ -301,9 +289,9 @@ dependencies = [ [[package]] name = "async-signal" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "329972aa325176e89114919f2a80fdae4f4c040f66a370b1a1159c6c0f94e7aa" +checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" dependencies = [ "async-io 2.3.3", "async-lock 3.4.0", @@ -440,22 +428,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "block-modes" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cb03d1bed155d89dce0f845b7899b18a9a163e148fd004e1c28421a783e2d8e" -dependencies = [ - "block-padding 0.2.1", - "cipher 0.3.0", -] - -[[package]] -name = "block-padding" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" - [[package]] name = "block-padding" version = "0.3.3" @@ -544,14 +516,14 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" dependencies = [ - "cipher 0.4.4", + "cipher", ] [[package]] name = "cc" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" +checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" [[package]] name = "cfg-if" @@ -573,15 +545,6 @@ dependencies = [ "windows-targets 0.52.5", ] -[[package]] -name = "cipher" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" -dependencies = [ - "generic-array", -] - [[package]] name = "cipher" version = "0.4.4" @@ -594,9 +557,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.4" +version = "4.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" dependencies = [ "clap_builder", "clap_derive", @@ -604,9 +567,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.2" +version = "4.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" dependencies = [ "anstream", "anstyle", @@ -616,18 +579,18 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.2" +version = "4.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd79504325bf38b10165b02e89b4347300f855f273c4cb30c4a3209e6583275e" +checksum = "d2020fa13af48afc65a9a87335bda648309ab3d154cd03c7ff95b378c7ed39c4" dependencies = [ "clap", ] [[package]] name = "clap_derive" -version = "4.5.4" +version = "4.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -637,9 +600,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" [[package]] name = "colorchoice" @@ -870,7 +833,7 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" dependencies = [ - "cipher 0.4.4", + "cipher", ] [[package]] @@ -890,7 +853,7 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7958f6804a494a81a62dd792c63b0a2c4c1718846a847fc226f67854288c630d" dependencies = [ - "aes 0.8.4", + "aes", "aes-gcm", "base64 0.22.1", "bytes", @@ -1005,6 +968,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "displaydoc" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "dlv-list" version = "0.5.2" @@ -1028,9 +1002,9 @@ checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" [[package]] name = "dtoa-short" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbaceec3c6e4211c79e7b1800fb9680527106beb2f9c51904a3210c03a448c74" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" dependencies = [ "dtoa", ] @@ -1058,9 +1032,9 @@ dependencies = [ [[package]] name = "enumflags2" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" +checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" dependencies = [ "enumflags2_derive", "serde", @@ -1068,9 +1042,9 @@ dependencies = [ [[package]] name = "enumflags2_derive" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" +checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", @@ -1517,12 +1491,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", - "futures-core", + "futures-util", "http", "http-body", "pin-project-lite", @@ -1530,9 +1504,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "9f3935c160d00ac752e09787e6e6bfc26494c2183cc922f1bc678a60d4733bc2" [[package]] name = "hyper" @@ -1614,14 +1588,134 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f8ac670d7422d7f76b32e17a5db556510825b29ec9154f235977c9caba61036" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "idna" -version = "0.5.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "4716a3a0933a1d01c2f72450e89596eb51dd34ef3c211ccd875acdf1f8fe47ed" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", + "smallvec", + "utf8_iter", ] [[package]] @@ -1651,7 +1745,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" dependencies = [ - "block-padding 0.3.3", + "block-padding", "generic-array", ] @@ -1900,6 +1994,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" + [[package]] name = "lock_api" version = "0.4.12" @@ -2278,9 +2378,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "open" -version = "5.1.3" +version = "5.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb49fbd5616580e9974662cb96a3463da4476e649a7e4b258df0de065db0657" +checksum = "b5ca541f22b1c46d4bb9801014f234758ab4297e7870b904b6a8415b980a7388" dependencies = [ "is-wsl", "libc", @@ -2790,14 +2890,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.4" +version = "1.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.6", - "regex-syntax 0.8.3", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", ] [[package]] @@ -2811,13 +2911,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.3", + "regex-syntax 0.8.4", ] [[package]] @@ -2828,9 +2928,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "reqwest" @@ -2872,7 +2972,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.26.1", + "webpki-roots 0.26.2", "winreg", ] @@ -3122,12 +3222,12 @@ dependencies = [ [[package]] name = "secret-service" -version = "3.0.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5da1a5ad4d28c03536f82f77d9f36603f5e37d8869ac98f0a750d5b5686d8d95" +checksum = "b5204d39df37f06d1944935232fd2dfe05008def7ca599bf28c0800366c8a8f9" dependencies = [ - "aes 0.7.5", - "block-modes", + "aes", + "cbc", "futures-util", "generic-array", "hkdf", @@ -3580,9 +3680,9 @@ dependencies = [ [[package]] name = "strum_macros" -version = "0.26.3" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7993a8e3a9e88a00351486baae9522c91b123a088f76469e5bd5cc17198ea87" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -3646,6 +3746,17 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "tabled" version = "0.15.0" @@ -3796,20 +3907,15 @@ dependencies = [ ] [[package]] -name = "tinyvec" -version = "1.6.0" +name = "tinystr" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" dependencies = [ - "tinyvec_macros", + "displaydoc", + "zerovec", ] -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - [[package]] name = "tokio" version = "1.38.0" @@ -3878,14 +3984,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.13" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba" +checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.13", + "toml_edit 0.22.14", ] [[package]] @@ -3910,15 +4016,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.13" +version = "0.22.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c127785850e8c20836d49732ae6abfa47616e60bf9d9f57c43c250361a9db96c" +checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.9", + "winnow 0.6.13", ] [[package]] @@ -4068,12 +4174,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - [[package]] name = "unicode-ident" version = "1.0.12" @@ -4086,15 +4186,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" -[[package]] -name = "unicode-normalization" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" -dependencies = [ - "tinyvec", -] - [[package]] name = "unicode-segmentation" version = "1.11.0" @@ -4113,9 +4204,9 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode_categories" @@ -4141,9 +4232,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "f7c25da092f0a868cdf09e8674cd3b7ef3a7d92a24253e663a2fb85e2496de56" dependencies = [ "form_urlencoded", "idna", @@ -4162,11 +4253,23 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "valuable" @@ -4291,9 +4394,9 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" +checksum = "3c452ad30530b54a4d8e71952716a212b08efd0f3562baa66c29a618b07da7c3" dependencies = [ "rustls-pki-types", ] @@ -4395,9 +4498,9 @@ dependencies = [ [[package]] name = "windows-result" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "749f0da9cc72d82e600d8d2e44cadd0b9eedb9038f71a1c58556ac1c5791813b" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" dependencies = [ "windows-targets 0.52.5", ] @@ -4561,9 +4664,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.9" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86c949fede1d13936a99f14fafd3e76fd642b556dd2ce96287fbe2e0151bfac6" +checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" dependencies = [ "memchr", ] @@ -4578,14 +4681,26 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "xdg-home" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" +checksum = "ca91dcf8f93db085f3a0a29358cd0b9d670915468f4290e8b85d118a34211ab8" dependencies = [ "libc", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -4594,6 +4709,30 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", + "synstructure", +] + [[package]] name = "zbus" version = "3.15.2" @@ -4675,12 +4814,55 @@ dependencies = [ "syn 2.0.66", ] +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", + "synstructure", +] + [[package]] name = "zeroize" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +[[package]] +name = "zerovec" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb2cc8827d6c0994478a15c53f374f46fbd41bea663d809b14744bc42e6b109c" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97cf56601ee5052b4417d90c8755c6683473c926039908196cf35d99f893ebe7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "zvariant" version = "3.15.2" diff --git a/crates/lcode/src/editor.rs b/crates/lcode/src/editor.rs index 086ff1f..da9f88e 100644 --- a/crates/lcode/src/editor.rs +++ b/crates/lcode/src/editor.rs @@ -1,4 +1,4 @@ -use std::process::Command; +use std::{io::prelude::BufRead, process::Command}; use lcode_config::global::{G_CONFIG_PATH, G_LOG_PATH, G_USER_CONFIG}; use leetcode_api::{ @@ -48,13 +48,22 @@ pub async fn integr_cargo(id: &str, code_path: &str) -> Result<()> { // return early return append_bin(id, code_path, &mut f).await; } - let cargo_str = fs::read_to_string(&cargo_path) - .await - .into_diagnostic()?; - - let cont = cargo_str - .split('\n') - .any(|f| f.contains(&format!("\"{id}\""))); + let find = format!("\"{id}\""); + let cont = tokio::task::spawn_blocking(move || { + let Ok(cargo_file) = std::fs::File::open(&cargo_path) + else { + return false; + }; + let buf_reader = std::io::BufReader::new(cargo_file); + buf_reader + .lines() + .skip(5) // front 5 lines don't need participate + .filter_map(Result::ok) + .skip_while(|v| v.starts_with("[[") || v.starts_with("path")) + .any(|line| line.contains(&find)) + }) + .await + .into_diagnostic()?; if !cont { append_bin(id, code_path, &mut f).await?; From 1ad08065b211b03d48da964058e7c12811059137 Mon Sep 17 00:00:00 2001 From: saying Date: Fri, 26 Jul 2024 22:22:38 +0800 Subject: [PATCH 10/13] chore(rust): update to 1.80.0 chore(rust-toolchain): set stable channel chore(clippy): tweak lints --- .github/workflows/release.yml | 1 - Cargo.lock | 534 ++++++++++---------- Cargo.toml | 358 +++++-------- crates/key_parse/Cargo.toml | 3 + crates/key_parse/README.md | 1 + crates/lcode-config/Cargo.toml | 5 +- crates/lcode-config/README.md | 1 + crates/lcode-config/src/theme/theme.rs | 4 +- crates/lcode/Cargo.toml | 4 +- crates/lcode/src/app/edit/cmds/button.rs | 2 +- crates/lcode/src/app/impl_app/edit_qs.rs | 2 +- crates/lcode/src/cli.rs | 123 ++--- crates/lcode/src/mytui/ui/mod.rs | 2 +- crates/leetcode-api/Cargo.toml | 5 +- crates/leetcode-api/README.md | 1 + crates/leetcode-api/src/dao/save_info.rs | 7 +- crates/leetcode-api/src/render/qs_detail.rs | 4 +- crates/leetcode-api/src/render/run_res.rs | 97 ++-- crates/leetcode-api/tests/sync_work.rs | 3 +- rust-toolchain.toml | 2 +- 20 files changed, 517 insertions(+), 642 deletions(-) create mode 100644 crates/key_parse/README.md create mode 100644 crates/lcode-config/README.md create mode 100644 crates/leetcode-api/README.md diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 39d5a4c..c2fd944 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -72,7 +72,6 @@ jobs: - name: Fetch Repository uses: actions/checkout@v4 - - name: Rust Cache uses: Swatinem/rust-cache@v2 diff --git a/Cargo.lock b/Cargo.lock index 2b0adb3..2a838f6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -167,12 +167,14 @@ dependencies = [ [[package]] name = "async-broadcast" -version = "0.5.1" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" +checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" dependencies = [ - "event-listener 2.5.3", + "event-listener 5.3.1", + "event-listener-strategy", "futures-core", + "pin-project-lite", ] [[package]] @@ -200,54 +202,25 @@ dependencies = [ "tokio", ] -[[package]] -name = "async-io" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" -dependencies = [ - "async-lock 2.8.0", - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-lite 1.13.0", - "log", - "parking", - "polling 2.8.0", - "rustix 0.37.27", - "slab", - "socket2 0.4.10", - "waker-fn", -] - [[package]] name = "async-io" version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" dependencies = [ - "async-lock 3.4.0", + "async-lock", "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.3.0", + "futures-lite", "parking", - "polling 3.7.1", - "rustix 0.38.34", + "polling", + "rustix", "slab", "tracing", "windows-sys 0.52.0", ] -[[package]] -name = "async-lock" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" -dependencies = [ - "event-listener 2.5.3", -] - [[package]] name = "async-lock" version = "3.4.0" @@ -261,19 +234,22 @@ dependencies = [ [[package]] name = "async-process" -version = "1.8.1" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" +checksum = "f7eda79bbd84e29c2b308d1dc099d7de8dcc7035e48f4bf5dc4a531a44ff5e2a" dependencies = [ - "async-io 1.13.0", - "async-lock 2.8.0", + "async-channel", + "async-io", + "async-lock", "async-signal", + "async-task", "blocking", "cfg-if", - "event-listener 3.1.0", - "futures-lite 1.13.0", - "rustix 0.38.34", - "windows-sys 0.48.0", + "event-listener 5.3.1", + "futures-lite", + "rustix", + "tracing", + "windows-sys 0.52.0", ] [[package]] @@ -293,13 +269,13 @@ version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" dependencies = [ - "async-io 2.3.3", - "async-lock 3.4.0", + "async-io", + "async-lock", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.34", + "rustix", "signal-hook-registry", "slab", "windows-sys 0.52.0", @@ -446,7 +422,7 @@ dependencies = [ "async-channel", "async-task", "futures-io", - "futures-lite 2.3.0", + "futures-lite", "piper", ] @@ -531,6 +507,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chrono" version = "0.4.38" @@ -542,7 +524,7 @@ dependencies = [ "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -662,6 +644,34 @@ dependencies = [ "tiny-keccak", ] +[[package]] +name = "cookie" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "cookie_store" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "387461abbc748185c3a6e1673d826918b450b87ff22639429c694619a83b6cf6" +dependencies = [ + "cookie", + "idna 0.3.0", + "log", + "publicsuffix", + "serde", + "serde_derive", + "serde_json", + "time", + "url", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -849,9 +859,9 @@ dependencies = [ [[package]] name = "decrypt-cookies" -version = "0.5.3" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7958f6804a494a81a62dd792c63b0a2c4c1718846a847fc226f67854288c630d" +checksum = "5fb3d9b27e7d60fefaa3e441fe29535906a509fa60ace323eae27c6153a2e445" dependencies = [ "aes", "aes-gcm", @@ -865,6 +875,7 @@ dependencies = [ "miette", "pbkdf2", "rayon", + "reqwest", "rust-ini", "sea-orm", "secret-service", @@ -875,7 +886,7 @@ dependencies = [ "strum_macros", "tokio", "tracing", - "windows 0.54.0", + "windows 0.58.0", ] [[package]] @@ -1030,6 +1041,12 @@ dependencies = [ "serde", ] +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + [[package]] name = "enumflags2" version = "0.7.10" @@ -1073,17 +1090,6 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" -[[package]] -name = "event-listener" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - [[package]] name = "event-listener" version = "5.3.1" @@ -1105,15 +1111,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "fastrand" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] - [[package]] name = "fastrand" version = "2.1.0" @@ -1214,28 +1211,16 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" -[[package]] -name = "futures-lite" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" -dependencies = [ - "fastrand 1.9.0", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] - [[package]] name = "futures-lite" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ + "fastrand", "futures-core", + "futures-io", + "parking", "pin-project-lite", ] @@ -1558,7 +1543,7 @@ dependencies = [ "http-body", "hyper", "pin-project-lite", - "socket2 0.5.7", + "socket2", "tokio", "tower", "tower-service", @@ -1706,6 +1691,16 @@ dependencies = [ "syn 2.0.66", ] +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + [[package]] name = "idna" version = "1.0.0" @@ -1766,26 +1761,6 @@ dependencies = [ "unicode-width", ] -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.48.0", -] - [[package]] name = "ipnet" version = "2.9.0" @@ -1860,11 +1835,10 @@ dependencies = [ [[package]] name = "keyring" -version = "2.3.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "363387f0019d714aa60cc30ab4fe501a747f4c08fc58f069dd14be971bd495a0" +checksum = "c118b1bc529b034aad851808f41f49a69a337d10e112039e7f342e5fd514635b" dependencies = [ - "lazy_static", "security-framework", ] @@ -1876,7 +1850,7 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "lcode" -version = "0.9.2" +version = "0.9.3" dependencies = [ "atoi", "clap", @@ -1904,7 +1878,7 @@ dependencies = [ [[package]] name = "lcode-config" -version = "0.3.13" +version = "0.3.14" dependencies = [ "crossterm 0.27.0", "decrypt-cookies", @@ -1920,7 +1894,7 @@ dependencies = [ [[package]] name = "leetcode-api" -version = "0.4.0" +version = "0.4.1" dependencies = [ "colored", "decrypt-cookies", @@ -1982,12 +1956,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - [[package]] name = "linux-raw-sys" version = "0.4.14" @@ -2096,15 +2064,6 @@ version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.9.1" @@ -2195,14 +2154,15 @@ dependencies = [ [[package]] name = "nix" -version = "0.26.4" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "cfg-if", + "cfg_aliases", "libc", - "memoffset 0.7.1", + "memoffset", ] [[package]] @@ -2495,7 +2455,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -2656,7 +2616,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" dependencies = [ "atomic-waker", - "fastrand 2.1.0", + "fastrand", "futures-io", ] @@ -2666,22 +2626,6 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" -[[package]] -name = "polling" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if", - "concurrent-queue", - "libc", - "log", - "pin-project-lite", - "windows-sys 0.48.0", -] - [[package]] name = "polling" version = "3.7.1" @@ -2692,7 +2636,7 @@ dependencies = [ "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 0.38.34", + "rustix", "tracing", "windows-sys 0.52.0", ] @@ -2739,12 +2683,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.3.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" dependencies = [ - "once_cell", - "toml_edit 0.19.15", + "toml_edit 0.21.1", ] [[package]] @@ -2780,6 +2723,22 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "psl-types" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" + +[[package]] +name = "publicsuffix" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96a8c1bda5ae1af7f99a2962e49df150414a43d62404644d98dd5c3a93d07457" +dependencies = [ + "idna 0.3.0", + "psl-types", +] + [[package]] name = "quick-xml" version = "0.31.0" @@ -2941,6 +2900,8 @@ dependencies = [ "async-compression", "base64 0.22.1", "bytes", + "cookie", + "cookie_store", "futures-core", "futures-util", "h2", @@ -3008,20 +2969,6 @@ version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" -[[package]] -name = "rustix" -version = "0.37.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.3.8", - "windows-sys 0.48.0", -] - [[package]] name = "rustix" version = "0.38.34" @@ -3031,7 +2978,7 @@ dependencies = [ "bitflags 2.5.0", "errno", "libc", - "linux-raw-sys 0.4.14", + "linux-raw-sys", "windows-sys 0.52.0", ] @@ -3222,9 +3169,9 @@ dependencies = [ [[package]] name = "secret-service" -version = "3.1.0" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5204d39df37f06d1944935232fd2dfe05008def7ca599bf28c0800366c8a8f9" +checksum = "e4d35ad99a181be0a60ffcbe85d680d98f87bdc4d7644ade319b87076b9dbfd4" dependencies = [ "aes", "cbc", @@ -3451,16 +3398,6 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" -[[package]] -name = "socket2" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "socket2" version = "0.5.7" @@ -3799,8 +3736,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", - "fastrand 2.1.0", - "rustix 0.38.34", + "fastrand", + "rustix", "windows-sys 0.52.0", ] @@ -3821,7 +3758,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" dependencies = [ - "rustix 0.38.34", + "rustix", "windows-sys 0.48.0", ] @@ -3916,6 +3853,21 @@ dependencies = [ "zerovec", ] +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + [[package]] name = "tokio" version = "1.38.0" @@ -3930,7 +3882,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.7", + "socket2", "tokio-macros", "tracing", "windows-sys 0.48.0", @@ -4005,9 +3957,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.19.15" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ "indexmap", "toml_datetime", @@ -4169,11 +4121,17 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" dependencies = [ - "memoffset 0.9.1", + "memoffset", "tempfile", "winapi", ] +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + [[package]] name = "unicode-ident" version = "1.0.12" @@ -4186,6 +4144,15 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + [[package]] name = "unicode-segmentation" version = "1.11.0" @@ -4237,7 +4204,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7c25da092f0a868cdf09e8674cd3b7ef3a7d92a24253e663a2fb85e2496de56" dependencies = [ "form_urlencoded", - "idna", + "idna 1.0.0", "percent-encoding", ] @@ -4289,12 +4256,6 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" -[[package]] -name = "waker-fn" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" - [[package]] name = "want" version = "0.3.1" @@ -4425,22 +4386,22 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.54.0" +version = "0.56.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132" dependencies = [ - "windows-core 0.54.0", - "windows-targets 0.52.5", + "windows-core 0.56.0", + "windows-targets 0.52.6", ] [[package]] name = "windows" -version = "0.56.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ - "windows-core 0.56.0", - "windows-targets 0.52.5", + "windows-core 0.58.0", + "windows-targets 0.52.6", ] [[package]] @@ -4449,29 +4410,32 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] name = "windows-core" -version = "0.54.0" +version = "0.56.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" +checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6" dependencies = [ - "windows-result", - "windows-targets 0.52.5", + "windows-implement 0.56.0", + "windows-interface 0.56.0", + "windows-result 0.1.2", + "windows-targets 0.52.6", ] [[package]] name = "windows-core" -version = "0.56.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" dependencies = [ - "windows-implement", - "windows-interface", - "windows-result", - "windows-targets 0.52.5", + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings", + "windows-targets 0.52.6", ] [[package]] @@ -4485,6 +4449,17 @@ dependencies = [ "syn 2.0.66", ] +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "windows-interface" version = "0.56.0" @@ -4496,13 +4471,43 @@ dependencies = [ "syn 2.0.66", ] +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "windows-result" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", ] [[package]] @@ -4520,7 +4525,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -4540,18 +4545,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -4560,7 +4565,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6998aa457c9ba8ff2fb9f13e9d2a930dabcea28f1d0ab94d687d8b3654844515" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -4571,9 +4576,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -4583,9 +4588,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -4595,15 +4600,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -4613,9 +4618,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -4625,9 +4630,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -4637,9 +4642,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -4649,9 +4654,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -4735,24 +4740,21 @@ dependencies = [ [[package]] name = "zbus" -version = "3.15.2" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "675d170b632a6ad49804c8cf2105d7c31eddd3312555cffd4b740e08e97c25e6" +checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" dependencies = [ "async-broadcast", "async-process", "async-recursion", "async-trait", - "byteorder", - "derivative", "enumflags2", - "event-listener 2.5.3", + "event-listener 5.3.1", "futures-core", "futures-sink", "futures-util", "hex", "nix", - "once_cell", "ordered-stream", "rand", "serde", @@ -4762,7 +4764,7 @@ dependencies = [ "tokio", "tracing", "uds_windows", - "winapi", + "windows-sys 0.52.0", "xdg-home", "zbus_macros", "zbus_names", @@ -4771,23 +4773,22 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "3.15.2" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7131497b0f887e8061b430c530240063d33bf9455fa34438f388a245da69e0a5" +checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "regex", - "syn 1.0.109", + "syn 2.0.66", "zvariant_utils", ] [[package]] name = "zbus_names" -version = "2.6.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d" +checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" dependencies = [ "serde", "static_assertions", @@ -4865,13 +4866,12 @@ dependencies = [ [[package]] name = "zvariant" -version = "3.15.2" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eef2be88ba09b358d3b58aca6e41cd853631d44787f319a1383ca83424fb2db" +checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" dependencies = [ - "byteorder", + "endi", "enumflags2", - "libc", "serde", "static_assertions", "zvariant_derive", @@ -4879,24 +4879,24 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "3.15.2" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37c24dc0bed72f5f90d1f8bb5b07228cbf63b3c6e9f82d82559d4bae666e7ed9" +checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.66", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "1.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200" +checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.66", ] diff --git a/Cargo.toml b/Cargo.toml index 268aece..7d457f9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -51,7 +51,7 @@ ratatui = { version = "^0.26.3" } colored = { version = "^2" } key_parse = { path = "./crates/key_parse", version = "^0.2" } -decrypt-cookies = { version = "^0.5" } +decrypt-cookies = { version = "^0.6", default-features = false, features = ["reqwest"] } lcode-config = { path = "./crates/lcode-config", version = "^0.3" } leetcode-api = { path = "./crates/leetcode-api", version = "^0.4", features = ["ratatui"] } @@ -59,254 +59,128 @@ leetcode-api = { path = "./crates/leetcode-api", version = "^0.4", features = temporary_cstring_as_ptr = "deny" [workspace.lints.clippy] -absurd_extreme_comparisons = "allow" +perf = { level = "deny", priority = -1 } -empty_enum_variants_with_brackets = "warn" -match_same_arms = "warn" -missing_asserts_for_indexing = "warn" -multiple_unsafe_ops_per_block = "warn" -uninhabited_references = "warn" -wildcard_dependencies = "warn" - -# missing_errors_doc = "warn" -# missing_panics_doc = "warn" -unnecessary_safety_doc = "warn" -doc_link_with_quotes = "warn" -doc_markdown = "warn" -empty_line_after_doc_comments = "warn" - -string_slice = "warn" -str_to_string = "warn" -str_split_at_newline = "warn" -string_add_assign = "warn" -string_lit_as_bytes = "warn" -string_to_string = "warn" -manual_string_new = "warn" -inefficient_to_string = "warn" -needless_raw_strings = "warn" - -filter_map_next = "warn" -flat_map_option = "warn" -option_if_let_else = "warn" -option_option = "warn" -option_as_ref_cloned = "warn" -map_err_ignore = "warn" -map_unwrap_or = "warn" -zero_sized_map_values = "warn" - -maybe_infinite_iter = "warn" -from_iter_instead_of_collect = "warn" -iter_not_returning_iterator = "warn" -iter_on_empty_collections = "warn" -iter_on_single_items = "warn" -iter_with_drain = "warn" -iter_filter_is_ok = "warn" -iter_filter_is_some = "warn" -iter_without_into_iter = "warn" -copy_iterator = "warn" - -let_underscore_untyped = "warn" -useless_let_if_seq = "warn" -equatable_if_let = "warn" -bool_to_int_with_if = "warn" -if_not_else = "warn" -if_then_some_else_none = "warn" -# else_if_without_else = "warn" - -manual_is_variant_and = "warn" -manual_assert = "warn" -manual_clamp = "warn" -manual_instant_elapsed = "warn" -manual_let_else = "warn" -manual_ok_or = "warn" -decimal_literal_representation = "warn" -unreadable_literal = "warn" - -redundant_closure_for_method_calls = "warn" -redundant_clone = "warn" -redundant_else = "warn" -redundant_feature_names = "warn" -redundant_pub_crate = "warn" - -unwrap_used = "warn" -unwrap_in_result = "warn" - -alloc_instead_of_core = "warn" -allow_attributes = "warn" -allow_attributes_without_reason = "warn" - -branches_sharing_code = "warn" -case_sensitive_file_extension_comparisons = "warn" - -clear_with_drain = "warn" -collection_is_never_read = "warn" - -# float_arithmetic = "warn" -float_cmp = "warn" -float_cmp_const = "warn" -lossy_float_literal = "warn" -imprecise_flops = "warn" -suboptimal_flops = "warn" -modulo_arithmetic = "warn" - -explicit_deref_methods = "warn" -explicit_into_iter_loop = "warn" -explicit_iter_loop = "warn" - -rc_buffer = "warn" -rc_mutex = "warn" - -mutex_atomic = "warn" -mutex_integer = "warn" +### nursery group +nursery = { level = "warn", priority = -1 } +trivial_regex = "allow" # see: -invalid_upcast_comparisons = "warn" -linkedlist = "warn" -match_on_vec_items = "warn" -match_wild_err_arm = "warn" - -match_bool = "warn" +### pedantic group +inconsistent_struct_constructor = "warn" +match_on_vec_items = "warn" +match_same_arms = "warn" +single_char_pattern = "warn" +missing_fields_in_debug = "warn" +assigning_clones = "warn" +rc_mutex = "warn" needless_bitwise_bool = "warn" - -needless_pass_by_ref_mut = "warn" -needless_collect = "warn" -needless_continue = "warn" -needless_for_each = "warn" -needless_pass_by_value = "warn" - +needless_continue = "warn" +needless_pass_by_value = "warn" range_minus_one = "warn" -range_plus_one = "warn" - +range_plus_one = "warn" semicolon_if_nothing_returned = "warn" -semicolon_inside_block = "warn" -semicolon_outside_block = "warn" - -unnecessary_box_returns = "warn" -unnecessary_join = "warn" -unnecessary_safety_comment = "warn" -unnecessary_self_imports = "warn" -unnecessary_struct_initialization = "warn" -unnecessary_wraps = "warn" - -stable_sort_primitive = "warn" -cloned_instead_of_copied = "warn" - -unused_async = "warn" -unused_peekable = "warn" -unused_rounding = "warn" -unused_self = "warn" - -use_self = "warn" - -create_dir = "warn" -verbose_file_reads = "warn" -verbose_bit_mask = "warn" - -unneeded_field_pattern = "warn" -unnested_or_patterns = "warn" -type_repetition_in_bounds = "warn" +verbose_bit_mask = "warn" +unneeded_field_pattern = "warn" +unnested_or_patterns = "warn" unchecked_duration_subtraction = "warn" -unicode_not_nfc = "warn" -missing_const_for_fn = "warn" -mut_mut = "warn" -filetype_is_file = "warn" -readonly_write_lock = "warn" -try_err = "warn" same_functions_in_if_condition = "warn" -same_name_method = "warn" - -large_digit_groups = "warn" -large_futures = "warn" -large_include_file = "warn" -large_stack_arrays = "warn" -large_stack_frames = "warn" -large_types_passed_by_value = "warn" - -mem_forget = "warn" -empty_drop = "warn" -empty_line_after_outer_attr = "warn" -empty_structs_with_brackets = "warn" -empty_enum = "warn" -enum_glob_use = "warn" - -error_impl_error = "warn" -exit = "warn" -ignored_unit_patterns = "warn" -clone_on_ref_ptr = "warn" - -trait_duplication_in_bounds = "warn" -default_trait_access = "warn" -impl_trait_in_params = "warn" - -trivial_regex = "warn" +same_name_method = "warn" +zero_sized_map_values = "warn" +map_unwrap_or = "warn" +option_as_ref_cloned = "warn" +flat_map_option = "warn" +unnecessary_join = "warn" +unnecessary_safety_comment = "warn" +unnecessary_self_imports = "warn" +unnecessary_wraps = "warn" +cloned_instead_of_copied = "warn" +stable_sort_primitive = "warn" +unused_async = "warn" +unused_self = "warn" +large_futures = "warn" +large_stack_arrays = "warn" +large_digit_groups = "warn" +default_trait_access = "warn" trivially_copy_pass_by_ref = "warn" - -# as_conversions = "warn" -checked_conversions = "warn" -as_underscore = "warn" -borrow_as_ptr = "warn" -as_ptr_cast_mut = "warn" -# cast_lossless = "warn" -# cast_possible_truncation = "warn" -# cast_possible_wrap = "warn" -cast_precision_loss = "warn" -cast_ptr_alignment = "warn" -cast_sign_loss = "warn" -ptr_as_ptr = "warn" -ptr_cast_constness = "warn" -tuple_array_conversions = "warn" -fn_to_numeric_cast_any = "warn" - -transmute_ptr_to_ptr = "warn" -transmute_undefined_repr = "warn" - -# panic = "warn" -panic_in_result_fn = "warn" +doc_link_with_quotes = "warn" +doc_markdown = "warn" +naive_bytecount = "warn" +expl_impl_clone_on_copy = "warn" +mismatching_type_param_order = "warn" +many_single_char_names = "warn" +no_mangle_with_rust_abi = "warn" +index_refutable_slice = "warn" +macro_use_imports = "warn" +implicit_clone = "warn" should_panic_without_expect = "warn" -significant_drop_tightening = "warn" -pub_without_shorthand = "warn" - -ref_binding_to_reference = "warn" -ref_option_ref = "warn" -ref_patterns = "warn" - -rest_pat_in_fully_bound_structs = "warn" - -implicit_hasher = "warn" -implicit_clone = "warn" - -macro_use_imports = "warn" -nonstandard_macro_braces = "warn" - -fn_params_excessive_bools = "warn" -# struct_excessive_bools = "warn" - -unseparated_literal_suffix = "warn" -# default_numeric_fallback = "warn" - -debug_assert_with_mut_call = "warn" +ptr_cast_constness = "warn" +ptr_as_ptr = "warn" +cast_ptr_alignment = "warn" +borrow_as_ptr = "warn" +cast_sign_loss = "warn" +str_split_at_newline = "warn" +string_add_assign = "warn" +manual_string_new = "warn" +inefficient_to_string = "warn" +enum_glob_use = "warn" +explicit_deref_methods = "warn" +redundant_closure_for_method_calls = "warn" +redundant_else = "warn" +manual_c_str_literals = "warn" +explicit_iter_loop = "warn" +explicit_into_iter_loop = "warn" +maybe_infinite_iter = "warn" +from_iter_instead_of_collect = "warn" +iter_not_returning_iterator = "warn" +iter_filter_is_ok = "warn" +iter_filter_is_some = "warn" +iter_without_into_iter = "warn" +into_iter_without_iter = "warn" +filter_map_next = "warn" +manual_is_variant_and = "warn" +manual_assert = "warn" +manual_instant_elapsed = "warn" +manual_let_else = "warn" +manual_ok_or = "warn" +if_not_else = "warn" +bool_to_int_with_if = "warn" + +### restriction group +unwrap_used = "warn" +unwrap_in_result = "warn" +semicolon_outside_block = "warn" +verbose_file_reads = "warn" +try_err = "warn" +allow_attributes = "warn" +allow_attributes_without_reason = "warn" +as_underscore = "warn" +clone_on_ref_ptr = "warn" +create_dir = "warn" default_union_representation = "warn" -deref_by_slicing = "warn" -derive_partial_eq_without_eq = "warn" -disallowed_script_idents = "warn" - -index_refutable_slice = "warn" - -or_fun_call = "warn" - -path_buf_push_overwrite = "warn" - -no_mangle_with_rust_abi = "warn" - -many_single_char_names = "warn" -mismatching_type_param_order = "warn" -expl_impl_clone_on_copy = "warn" -fallible_impl_from = "warn" -implied_bounds_in_impls = "warn" -inconsistent_struct_constructor = "warn" -mixed_read_write_in_expression = "warn" -naive_bytecount = "warn" -negative_feature_names = "warn" -no_effect_underscore_binding = "warn" - -# exhaustive_enums = "warn" -# exhaustive_structs = "warn" +deref_by_slicing = "warn" +disallowed_script_idents = "warn" +empty_drop = "warn" +empty_enum_variants_with_brackets = "warn" +empty_structs_with_brackets = "warn" +rest_pat_in_fully_bound_structs = "warn" +error_impl_error = "warn" +filetype_is_file = "warn" +fn_to_numeric_cast_any = "warn" +if_then_some_else_none = "warn" +impl_trait_in_params = "warn" +lossy_float_literal = "warn" +missing_asserts_for_indexing = "warn" +mixed_read_write_in_expression = "warn" +modulo_arithmetic = "warn" +multiple_unsafe_ops_per_block = "warn" +unnecessary_safety_doc = "warn" +ref_option_ref = "warn" +pub_without_shorthand = "warn" +panic_in_result_fn = "warn" +format_push_string = "warn" +str_to_string = "warn" +string_to_string = "warn" + +### cargo group +cargo = { level = "warn", priority = -1 } +multiple_crate_versions = "allow" diff --git a/crates/key_parse/Cargo.toml b/crates/key_parse/Cargo.toml index 4ee0d0c..a3484b0 100644 --- a/crates/key_parse/Cargo.toml +++ b/crates/key_parse/Cargo.toml @@ -8,6 +8,9 @@ authors = { workspace = true } homepage = { workspace = true } repository = { workspace = true } rust-version = "1.77" +keywords = ["vim", "keymap"] +categories = ["config"] +readme = "./README.md" exclude = ["tests/"] diff --git a/crates/key_parse/README.md b/crates/key_parse/README.md new file mode 100644 index 0000000..6734211 --- /dev/null +++ b/crates/key_parse/README.md @@ -0,0 +1 @@ +# parse keymap like vim diff --git a/crates/lcode-config/Cargo.toml b/crates/lcode-config/Cargo.toml index f946e5e..d66e01d 100644 --- a/crates/lcode-config/Cargo.toml +++ b/crates/lcode-config/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lcode-config" -version = "0.3.13" +version = "0.3.14" license = "MIT OR Apache-2.0" description = "config mod for [lcode](https://crates.io/crates/lcode)" edition = { workspace = true } @@ -8,6 +8,9 @@ authors = { workspace = true } homepage = { workspace = true } repository = { workspace = true } rust-version = { workspace = true } +keywords = ["lcode"] +categories = ["config"] +readme = "./README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/crates/lcode-config/README.md b/crates/lcode-config/README.md new file mode 100644 index 0000000..4cafa49 --- /dev/null +++ b/crates/lcode-config/README.md @@ -0,0 +1 @@ +# lcode config diff --git a/crates/lcode-config/src/theme/theme.rs b/crates/lcode-config/src/theme/theme.rs index efd6e77..7e144d3 100644 --- a/crates/lcode-config/src/theme/theme.rs +++ b/crates/lcode-config/src/theme/theme.rs @@ -7,7 +7,7 @@ use ratatui::{ #[derive(Debug)] pub struct Tab { pub border: Style, - pub tab_style: Style, + pub style: Style, pub highlight_style: Style, } @@ -21,7 +21,7 @@ impl Tab { pub fn new() -> Self { Self { border: Style::new(), - tab_style: Style::new().fg(Color::Cyan).dim(), + style: Style::new().fg(Color::Cyan).dim(), highlight_style: Style::new().add_modifier(Modifier::BOLD), } } diff --git a/crates/lcode/Cargo.toml b/crates/lcode/Cargo.toml index 7ec8c98..fbac976 100644 --- a/crates/lcode/Cargo.toml +++ b/crates/lcode/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "lcode" -version = "0.9.2" +version = "0.9.3" description = "An application of terminal write leetcode.δΈ€δΈͺη»ˆη«―εˆ·εŠ›ζ‰£ηš„εΊ”η”¨" documentation = "https://docs.rs/lcode" license = "Apache-2.0" -readme = "../../README.md" +readme = "./README.md" keywords = ["cli", "leetcode", "tui", "terminal", "algorithms"] categories = ["algorithms", "command-line-utilities", "asynchronous"] edition = { workspace = true } diff --git a/crates/lcode/src/app/edit/cmds/button.rs b/crates/lcode/src/app/edit/cmds/button.rs index 1c487a7..89f33bc 100644 --- a/crates/lcode/src/app/edit/cmds/button.rs +++ b/crates/lcode/src/app/edit/cmds/button.rs @@ -11,7 +11,7 @@ pub struct ButState { } impl ButState { - pub fn active_but(&mut self) { + pub fn active_cur_but(&mut self) { self.state.states[self.selected] = ButtonState::Active; } pub fn done(&mut self) { diff --git a/crates/lcode/src/app/impl_app/edit_qs.rs b/crates/lcode/src/app/impl_app/edit_qs.rs index 9d500af..8473bd9 100644 --- a/crates/lcode/src/app/impl_app/edit_qs.rs +++ b/crates/lcode/src/app/impl_app/edit_qs.rs @@ -29,7 +29,7 @@ impl<'app_lf> App<'app_lf> { self.render(); } pub fn menu_button_trig(&mut self) -> bool { - self.edit.button.active_but(); + self.edit.button.active_cur_but(); match self.edit.button.selected { 0 => self.test_code(), 1 => self.submit_code(), diff --git a/crates/lcode/src/cli.rs b/crates/lcode/src/cli.rs index 714883d..c05cc58 100644 --- a/crates/lcode/src/cli.rs +++ b/crates/lcode/src/cli.rs @@ -184,25 +184,7 @@ pub async fn run() -> Result<()> { .await?; res.render_with_mdcat(); }, - Commands::Sync(args) => { - if args.force { - fs::remove_file(&*G_DATABASE_PATH) - .await - .into_diagnostic()?; - } - let start = Instant::now(); - println!("Waiting ……"); - - glob_leetcode() - .await - .sync_problem_index() - .await?; - - println!( - "Syncanhronize Done, spend: {}s", - (Instant::now() - start).as_secs_f64() - ); - }, + Commands::Sync(args) => cli_sync(args).await?, Commands::Edit(args) => match args.command { Some(cmd) => match cmd { CoT::Code(id) => Editor::open(IdSlug::Id(id.id), CodeTestFile::Code).await?, @@ -221,44 +203,8 @@ pub async fn run() -> Result<()> { .await?; qs.render_with_mdcat(); }, - Commands::Fzy(args) => match args.command { - Some(ag) => match ag { - DetailOrEdit::Detail(detail_args) => { - let id = select_a_question().await?; - - if id == 0 { - return Ok(()); - } - - let qs = glob_leetcode() - .await - .get_qs_detail(IdSlug::Id(id), detail_args.force) - .await?; - qs.render_with_mdcat(); - }, - DetailOrEdit::Edit => { - let id = select_a_question().await?; - - if id == 0 { - return Ok(()); - } - - Editor::open(IdSlug::Id(id), CodeTestFile::Code).await?; - }, - }, - None => { - let id = select_a_question().await?; - - if id == 0 { - return Ok(()); - } - - let qs = glob_leetcode() - .await - .get_qs_detail(IdSlug::Id(id), false) - .await?; - qs.render_with_mdcat(); - }, + Commands::Fzy(args) => { + fzy_search(args).await?; }, Commands::Star => crate::star(), Commands::Tui => Box::pin(mytui::run()).await?, @@ -269,3 +215,66 @@ pub async fn run() -> Result<()> { Ok(()) } + +async fn fzy_search(args: InterArgs) -> Result<(), miette::Error> { + match args.command { + Some(ag) => match ag { + DetailOrEdit::Detail(detail_args) => { + let id = select_a_question().await?; + + if id == 0 { + return Ok(()); + } + + let qs = glob_leetcode() + .await + .get_qs_detail(IdSlug::Id(id), detail_args.force) + .await?; + qs.render_with_mdcat(); + }, + DetailOrEdit::Edit => { + let id = select_a_question().await?; + + if id == 0 { + return Ok(()); + } + + Editor::open(IdSlug::Id(id), CodeTestFile::Code).await?; + }, + }, + None => { + let id = select_a_question().await?; + + if id == 0 { + return Ok(()); + } + + let qs = glob_leetcode() + .await + .get_qs_detail(IdSlug::Id(id), false) + .await?; + qs.render_with_mdcat(); + }, + }; + + Ok(()) +} + +async fn cli_sync(args: Force) -> Result<(), miette::Error> { + if args.force { + fs::remove_file(&*G_DATABASE_PATH) + .await + .into_diagnostic()?; + } + let start = Instant::now(); + println!("Waiting ……"); + glob_leetcode() + .await + .sync_problem_index() + .await?; + println!( + "Syncanhronize Done, spend: {}s", + (Instant::now() - start).as_secs_f64() + ); + Ok(()) +} diff --git a/crates/lcode/src/mytui/ui/mod.rs b/crates/lcode/src/mytui/ui/mod.rs index 4d248da..ee66ea9 100644 --- a/crates/lcode/src/mytui/ui/mod.rs +++ b/crates/lcode/src/mytui/ui/mod.rs @@ -151,7 +151,7 @@ fn draw_tab(f: &mut Frame, app: &App, area: Rect) { .dim() .hidden() .select(app.tab_index.into()) - .style(G_THEME.tab.tab_style) + .style(G_THEME.tab.style) .highlight_style(G_THEME.tab.highlight_style); f.render_widget(tabs, area); } diff --git a/crates/leetcode-api/Cargo.toml b/crates/leetcode-api/Cargo.toml index 28305f5..1f0f17f 100644 --- a/crates/leetcode-api/Cargo.toml +++ b/crates/leetcode-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "leetcode-api" -version = "0.4.0" +version = "0.4.1" description = "leetcode api" license = "MIT" edition = { workspace = true } @@ -8,6 +8,9 @@ authors = { workspace = true } homepage = { workspace = true } repository = { workspace = true } rust-version = { workspace = true } +keywords = ["leetcode", "api"] +categories = ["web-programming::http-client"] +readme = "./README.md" exclude = ["tests/"] diff --git a/crates/leetcode-api/README.md b/crates/leetcode-api/README.md new file mode 100644 index 0000000..075ccf1 --- /dev/null +++ b/crates/leetcode-api/README.md @@ -0,0 +1 @@ +# leetcode api for lcode diff --git a/crates/leetcode-api/src/dao/save_info.rs b/crates/leetcode-api/src/dao/save_info.rs index 0bdf204..9af6f5d 100644 --- a/crates/leetcode-api/src/dao/save_info.rs +++ b/crates/leetcode-api/src/dao/save_info.rs @@ -1,4 +1,5 @@ use std::{ + fmt::Write as _, ops::Not, path::{Path, PathBuf}, }; @@ -30,7 +31,7 @@ pub struct FileInfo { } impl FileInfo { - async fn rest_file(path: impl AsRef) -> Result { + async fn rest_file + Send>(path: A) -> Result { OpenOptions::new() .create(true) .truncate(true) @@ -39,7 +40,7 @@ impl FileInfo { .await .into_diagnostic() } - async fn append_file(path: impl AsRef) -> Result { + async fn append_file + Send>(path: A) -> Result { OpenOptions::new() .create(true) .append(true) @@ -159,7 +160,7 @@ impl FileInfo { ); if let Some(snippets) = &detail.code_snippets { for snippet in snippets { - temp += &format!("{}\n", snippet.lang_slug); + writeln!(&mut temp, "{}", snippet.lang_slug).into_diagnostic()?; } } temp diff --git a/crates/leetcode-api/src/render/qs_detail.rs b/crates/leetcode-api/src/render/qs_detail.rs index e74ec19..9f45f4d 100644 --- a/crates/leetcode-api/src/render/qs_detail.rs +++ b/crates/leetcode-api/src/render/qs_detail.rs @@ -1,4 +1,4 @@ -use std::fmt::Display; +use std::fmt::{Display, Write as _}; use lcode_config::global::G_USER_CONFIG; #[cfg(feature = "ratatui")] @@ -52,7 +52,7 @@ impl Render for Question { res.push_str(&str); } if with_env { - res.push_str(&format!("\n## EnvInfo\n\n{}", env_info)); + let _ = write!(&mut res, "\n## EnvInfo\n\n{}", env_info); } res } diff --git a/crates/leetcode-api/src/render/run_res.rs b/crates/leetcode-api/src/render/run_res.rs index 28fb1b0..af4d6ee 100644 --- a/crates/leetcode-api/src/render/run_res.rs +++ b/crates/leetcode-api/src/render/run_res.rs @@ -1,3 +1,5 @@ +use std::fmt::Write as _; + #[cfg(feature = "ratatui")] use ratatui::{style::Stylize, text::Line}; @@ -121,8 +123,7 @@ impl Render for RunResult { let mut status_id_lang = if total_testcases == total_correct && total_correct > 0 { format!( - "\ - # Status Code: {scode}, Msg: {msg} βœ…\n* Lang: {lang}\n", + "# Status Code: {scode}, Msg: {msg} βœ…\n* Lang: {lang}\n", scode = self.status_code, msg = self.status_msg, lang = self.pretty_lang, @@ -130,102 +131,82 @@ impl Render for RunResult { } else { format!( - "\ - # Status Code: {scode}, Msg: {msg}\n* Lang: {lang}\n", + "# Status Code: {scode}, Msg: {msg}\n* Lang: {lang}\n", scode = self.status_code, msg = self.status_msg, lang = self.pretty_lang, ) }; if self.full_runtime_error.is_empty() && self.full_compile_error.is_empty() { - let total_test_case = format!( - "\ - * Total correct: {}\n* Total Testcases: {}\n", + let _ = writeln!( + &mut status_id_lang, + "* Total correct: {}\n* Total Testcases: {}", total_correct, total_testcases, ); - status_id_lang.push_str(&total_test_case); } if !self.last_testcase.is_empty() { - let last_testcase = format!( - "\ - * Last Testcases {}\n", + let _ = writeln!( + &mut status_id_lang, + "* Last Testcases {}", self.last_testcase ); - status_id_lang.push_str(&last_testcase); } if !self.status_runtime.is_empty() { - let mut run_time = format!( - "\ - * Runtime: {}\n", - self.status_runtime, - ); - if let Some(ercentile) = self.runtime_percentile { - run_time.push_str(&format!( - "\ - * Fast Than: {}%\n", - ercentile - )); - } - status_id_lang.push_str(&run_time); + _ = match self.runtime_percentile { + Some(perc) => writeln!( + &mut status_id_lang, + "* Runtime: {}\n* Fast Than: {}%", + self.status_runtime, perc + ), + None => writeln!(&mut status_id_lang, "* Runtime: {}", self.status_runtime), + }; } if !self.status_memory.is_empty() { - let mut run_memory = format!( - "\ - * Memory: {}\n", - self.status_memory, - ); - if let Some(memory_perc) = self.memory_percentile { - run_memory.push_str(&format!("* Memory Low Than: {}%\n", memory_perc)); - } - - status_id_lang.push_str(&run_memory); + _ = match self.memory_percentile { + Some(perc) => writeln!( + &mut status_id_lang, + "* Memory: {}\n* Memory Low Than: {}%", + self.status_memory, perc + ), + None => writeln!(&mut status_id_lang, "* Memory: {}\n", self.status_memory), + }; } if !self.full_compile_error.is_empty() { - let compile_error = format!( - "\ - * Compile Error:\n```\n{}\n```\n", + let _ = writeln!( + &mut status_id_lang, + "* Compile Error:\n```\n{}\n```", self.full_compile_error ); - status_id_lang.push_str(&compile_error); } if !self.full_runtime_error.is_empty() { - let runtime_err = format!( - "\ - * Runtime Error:\n```\n{}\n```\n", + let _ = writeln!( + &mut status_id_lang, + "* Runtime Error:\n```\n{}\n```", self.full_runtime_error ); - status_id_lang.push_str(&runtime_err); } if !self.code_answer.is_empty() { - let your_answer = format!( - "\ - * Your Answer: \n{}\n", + let _ = writeln!( + &mut status_id_lang, + "* Your Answer: \n{}", self.code_answer .iter() .fold(String::new(), |acc, v| acc + &format!(" * {}\n", v)) ); - - status_id_lang.push_str(&your_answer); } if !self.expected_code_answer.is_empty() { - let corr_answer = format!( - "\ - * Correct Answer: \n{}\n", + let _ = writeln!( + &mut status_id_lang, + "* Correct Answer: \n{}", self.expected_code_answer .iter() .fold(String::new(), |acc, v| acc + &format!(" * {}\n", v)) ); - status_id_lang.push_str(&corr_answer); } // seem default is `vec![""]` if !self.std_output_list.is_empty() && !self.std_output_list[0].is_empty() { let out_put = self.std_output_list.join("\n"); - let head = format!( - "\ - * Std Output:\n{}\n", - out_put - ); - status_id_lang.push_str(&head); + let _ = writeln!(&mut status_id_lang, "* Std Output:\n{}", out_put); } status_id_lang diff --git a/crates/leetcode-api/tests/sync_work.rs b/crates/leetcode-api/tests/sync_work.rs index 67963f5..1af726f 100644 --- a/crates/leetcode-api/tests/sync_work.rs +++ b/crates/leetcode-api/tests/sync_work.rs @@ -1,4 +1,3 @@ -#![feature(duration_constructors)] #![allow(clippy::unwrap_used)] use std::time::Duration; @@ -26,7 +25,7 @@ fn trigger() -> bool { } if let Ok(mod_time) = meta.modified() { if let Ok(elapsed) = mod_time.elapsed() { - return elapsed > Duration::from_days(100); + return elapsed > Duration::from_secs(31 * 24 * 60 * 60); } } } diff --git a/rust-toolchain.toml b/rust-toolchain.toml index ac8c816..95b5173 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "nightly" +channel = "stable" components = ["rustfmt", "clippy"] profile = "minimal" From 27918b58c3e29957eaff6f9d1c1dfd408cd478ca Mon Sep 17 00:00:00 2001 From: saying Date: Fri, 26 Jul 2024 22:49:08 +0800 Subject: [PATCH 11/13] chore(dependencies): update --- Cargo.lock | 799 ++++++++-------------- Cargo.toml | 2 +- crates/lcode-config/Cargo.toml | 2 +- crates/lcode/Cargo.toml | 4 +- crates/lcode/src/mytui/ui/edit_ui.rs | 2 + crates/lcode/src/mytui/ui/filter_topic.rs | 2 + crates/lcode/src/mytui/ui/select_ui.rs | 2 + crates/leetcode-api/Cargo.toml | 2 +- 8 files changed, 303 insertions(+), 512 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2a838f6..ca9c6e6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -118,9 +118,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", @@ -133,33 +133,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -191,9 +191,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5" +checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa" dependencies = [ "brotli", "futures-core", @@ -260,14 +260,14 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] name = "async-signal" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" +checksum = "dfb3634b73397aa844481f814fad23bbf07fdb0eabec10f2eb95e58944b1ec32" dependencies = [ "async-io", "async-lock", @@ -300,7 +300,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -311,13 +311,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -343,9 +343,9 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.72" +version = "0.3.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17c6a35df3749d2e8bb1b7b21a976d82b15548788d2735b9d82f329268f71a11" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" dependencies = [ "addr2line", "cc", @@ -385,9 +385,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "block" @@ -467,9 +467,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" [[package]] name = "cassowary" @@ -479,9 +479,9 @@ checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" [[package]] name = "castaway" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a17ed5635fc8536268e5d4de1e22e81ac34419e5f052d4d51f4e01dcc263fcc" +checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" dependencies = [ "rustversion", ] @@ -497,9 +497,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.99" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" [[package]] name = "cfg-if" @@ -539,9 +539,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.7" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" +checksum = "35723e6a11662c2afb578bcf0b88bf6ea8e21282a953428f240574fcc3a2b5b3" dependencies = [ "clap_builder", "clap_derive", @@ -549,9 +549,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.7" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" +checksum = "49eb96cbfa7cfa35017b7cd548c75b14c3118c98b423041d70562665e07fb0fa" dependencies = [ "anstream", "anstyle", @@ -561,36 +561,36 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.5" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2020fa13af48afc65a9a87335bda648309ab3d154cd03c7ff95b378c7ed39c4" +checksum = "c6ae69fbb0833c6fcd5a8d4b8609f108c7ad95fc11e248d853ff2c42a90df26a" dependencies = [ "clap", ] [[package]] name = "clap_derive" -version = "4.5.5" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" +checksum = "5d029b67f89d30bbb547c89fd5161293c0aec155fc691d7924b64550662db93e" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] name = "clap_lex" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "colored" @@ -646,9 +646,9 @@ dependencies = [ [[package]] name = "cookie" -version = "0.17.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" dependencies = [ "percent-encoding", "time", @@ -657,12 +657,12 @@ dependencies = [ [[package]] name = "cookie_store" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "387461abbc748185c3a6e1673d826918b450b87ff22639429c694619a83b6cf6" +checksum = "4934e6b7e8419148b6ef56950d277af8561060b56afd59e2aadf98b59fce6baa" dependencies = [ "cookie", - "idna 0.3.0", + "idna 0.5.0", "log", "publicsuffix", "serde", @@ -764,7 +764,7 @@ dependencies = [ "bitflags 1.3.2", "crossterm_winapi", "libc", - "mio", + "mio 0.8.11", "parking_lot", "signal-hook", "signal-hook-mio", @@ -777,11 +777,11 @@ version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "crossterm_winapi", "futures-core", "libc", - "mio", + "mio 0.8.11", "parking_lot", "signal-hook", "signal-hook-mio", @@ -834,7 +834,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -882,7 +882,7 @@ dependencies = [ "serde", "serde_json", "sha1", - "strum 0.26.2", + "strum 0.26.3", "strum_macros", "tokio", "tracing", @@ -911,13 +911,13 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.17" +version = "0.99.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.72", ] [[package]] @@ -979,17 +979,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "displaydoc" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - [[package]] name = "dlv-list" version = "0.5.2" @@ -1034,9 +1023,9 @@ checksum = "3a68a4904193147e0a8dec3314640e6db742afd5f6e634f428a6af230d9b3591" [[package]] name = "either" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" dependencies = [ "serde", ] @@ -1065,7 +1054,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -1232,7 +1221,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -1388,6 +1377,12 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + [[package]] name = "hex" version = "0.4.3" @@ -1418,27 +1413,13 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c66ee488a63a92237d5b48875b7e05bb293be8fb2894641c8118b60c08ab5ef" dependencies = [ - "html5ever 0.27.0", - "markup5ever 0.12.1", + "html5ever", + "markup5ever", "tendril", "thiserror", "unicode-width", ] -[[package]] -name = "html5ever" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" -dependencies = [ - "log", - "mac", - "markup5ever 0.11.0", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "html5ever" version = "0.27.0" @@ -1447,10 +1428,10 @@ checksum = "c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4" dependencies = [ "log", "mac", - "markup5ever 0.12.1", + "markup5ever", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -1466,9 +1447,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http", @@ -1489,15 +1470,15 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.2" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3935c160d00ac752e09787e6e6bfc26494c2183cc922f1bc678a60d4733bc2" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "hyper" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", @@ -1515,26 +1496,27 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.26.0" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c" +checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" dependencies = [ "futures-util", "http", "hyper", "hyper-util", - "rustls 0.22.4", + "rustls 0.23.12", "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", + "webpki-roots 0.26.3", ] [[package]] name = "hyper-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" +checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" dependencies = [ "bytes", "futures-channel", @@ -1573,124 +1555,6 @@ dependencies = [ "cc", ] -[[package]] -name = "icu_collections" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locid" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" - -[[package]] -name = "icu_normalizer" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "utf16_iter", - "utf8_iter", - "write16", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" - -[[package]] -name = "icu_properties" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f8ac670d7422d7f76b32e17a5db556510825b29ec9154f235977c9caba61036" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locid_transform", - "icu_properties_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" - -[[package]] -name = "icu_provider" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - [[package]] name = "idna" version = "0.3.0" @@ -1703,14 +1567,12 @@ dependencies = [ [[package]] name = "idna" -version = "1.0.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4716a3a0933a1d01c2f72450e89596eb51dd34ef3c211ccd875acdf1f8fe47ed" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ - "icu_normalizer", - "icu_properties", - "smallvec", - "utf8_iter", + "unicode-bidi", + "unicode-normalization", ] [[package]] @@ -1731,7 +1593,7 @@ checksum = "0122b7114117e64a63ac49f752a5ca4624d534c7b1c7de796ac196381cd2d947" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -1750,7 +1612,7 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fddf93031af70e75410a2511ec04d49e758ed2f26dad3404a934e0fb45cc12a" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "crossterm 0.25.0", "dyn-clone", "fuzzy-matcher", @@ -1794,15 +1656,15 @@ checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] @@ -1844,13 +1706,13 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "lcode" -version = "0.9.3" +version = "0.9.2" dependencies = [ "atoi", "clap", @@ -1878,7 +1740,7 @@ dependencies = [ [[package]] name = "lcode-config" -version = "0.3.14" +version = "0.3.13" dependencies = [ "crossterm 0.27.0", "decrypt-cookies", @@ -1894,7 +1756,7 @@ dependencies = [ [[package]] name = "leetcode-api" -version = "0.4.1" +version = "0.4.0" dependencies = [ "colored", "decrypt-cookies", @@ -1911,7 +1773,7 @@ dependencies = [ "sea-orm", "serde", "serde_json", - "strum 0.26.2", + "strum 0.26.3", "tabled", "tokio", "tracing", @@ -1941,7 +1803,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", ] @@ -1962,12 +1824,6 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" -[[package]] -name = "litemap" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" - [[package]] name = "lock_api" version = "0.4.12" @@ -1980,9 +1836,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lru" @@ -2021,20 +1877,6 @@ dependencies = [ "libc", ] -[[package]] -name = "markup5ever" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" -dependencies = [ - "log", - "phf 0.10.1", - "phf_codegen 0.10.0", - "string_cache", - "string_cache_codegen", - "tendril", -] - [[package]] name = "markup5ever" version = "0.12.1" @@ -2060,9 +1902,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memoffset" @@ -2101,7 +1943,7 @@ checksum = "dcf09caffaac8068c346b6df2a7fc27a177fd20b39421a39ce0a211bde679a6c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -2118,9 +1960,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", ] @@ -2137,6 +1979,18 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "mio" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "wasi", + "windows-sys 0.52.0", +] + [[package]] name = "new_debug_unreachable" version = "1.0.6" @@ -2158,7 +2012,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if", "cfg_aliases", "libc", @@ -2213,9 +2067,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", @@ -2276,16 +2130,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "objc" version = "0.2.7" @@ -2317,9 +2161,9 @@ dependencies = [ [[package]] name = "object" -version = "0.35.0" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8ec7ab813848ba4522158d5517a6093db1ded27575b070f4177b8d12b41db5e" +checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e" dependencies = [ "memchr", ] @@ -2338,9 +2182,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "open" -version = "5.1.4" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5ca541f22b1c46d4bb9801014f234758ab4297e7870b904b6a8415b980a7388" +checksum = "61a877bf6abd716642a53ef1b89fb498923a4afca5c754f9050b4d081c05c4b3" dependencies = [ "is-wsl", "libc", @@ -2403,7 +2247,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -2556,7 +2400,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -2594,7 +2438,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -2628,13 +2472,13 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "polling" -version = "3.7.1" +version = "3.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6a007746f34ed64099e88783b0ae369eaa3da6392868ba262e2af9b8fbaea1" +checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi", + "hermit-abi 0.4.0", "pin-project-lite", "rustix", "tracing", @@ -2716,9 +2560,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -2748,6 +2592,52 @@ dependencies = [ "memchr", ] +[[package]] +name = "quinn" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls 0.23.12", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" +dependencies = [ + "bytes", + "rand", + "ring", + "rustc-hash", + "rustls 0.23.12", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" +dependencies = [ + "libc", + "once_cell", + "socket2", + "windows-sys 0.52.0", +] + [[package]] name = "quote" version = "1.0.36" @@ -2789,11 +2679,11 @@ dependencies = [ [[package]] name = "ratatui" -version = "0.26.3" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f44c9e68fd46eda15c646fbb85e1040b657a58cdc8c98db1d97a55930d991eef" +checksum = "d16546c5b5962abf8ce6e2881e722b4e0ae3b6f1a08a26ae3573c55853ca68d3" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cassowary", "compact_str", "crossterm 0.27.0", @@ -2801,7 +2691,8 @@ dependencies = [ "lru", "paste", "stability", - "strum 0.26.2", + "strum 0.26.3", + "strum_macros", "unicode-segmentation", "unicode-truncate", "unicode-width", @@ -2829,11 +2720,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -2893,9 +2784,9 @@ checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "reqwest" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" +checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" dependencies = [ "async-compression", "base64 0.22.1", @@ -2918,7 +2809,8 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.22.4", + "quinn", + "rustls 0.23.12", "rustls-pemfile 2.1.2", "rustls-pki-types", "serde", @@ -2933,7 +2825,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.26.2", + "webpki-roots 0.26.3", "winreg", ] @@ -2969,13 +2861,19 @@ version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[package]] name = "rustix" version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", @@ -2995,14 +2893,14 @@ dependencies = [ [[package]] name = "rustls" -version = "0.22.4" +version = "0.23.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" dependencies = [ - "log", + "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.102.4", + "rustls-webpki 0.102.6", "subtle", "zeroize", ] @@ -3044,9 +2942,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.4" +version = "0.102.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" +checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" dependencies = [ "ring", "rustls-pki-types", @@ -3073,15 +2971,15 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scraper" -version = "0.19.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b80b33679ff7a0ea53d37f3b39de77ea0c75b12c5805ac43ec0c33b3051af1b" +checksum = "761fb705fdf625482d2ed91d3f0559dcfeab2798fe2771c69560a774865d0802" dependencies = [ "ahash", "cssparser", "ego-tree", "getopts", - "html5ever 0.26.0", + "html5ever", "once_cell", "selectors", "tendril", @@ -3107,7 +3005,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -3142,7 +3040,7 @@ dependencies = [ "proc-macro2", "quote", "sea-bae", - "syn 2.0.66", + "syn 2.0.72", "unicode-ident", ] @@ -3188,11 +3086,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -3201,9 +3099,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" dependencies = [ "core-foundation-sys", "libc", @@ -3215,7 +3113,7 @@ version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4eb30575f3638fc8f6815f448d50cb1a2e255b0897985c8c59f4d37b72a07b06" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cssparser", "derive_more", "fxhash", @@ -3230,29 +3128,29 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.203" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" dependencies = [ "itoa", "ryu", @@ -3267,14 +3165,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] name = "serde_spanned" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -3348,7 +3246,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" dependencies = [ "libc", - "mio", + "mio 0.8.11", "signal-hook", ] @@ -3419,11 +3317,10 @@ dependencies = [ [[package]] name = "sqlformat" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce81b7bd7c4493975347ef60d8c7e8b742d4694f4c49f93e0a12ea263938176c" +checksum = "f895e3734318cc55f1fe66258926c9b910c124d47520339efecbb6c59cec7c1f" dependencies = [ - "itertools", "nom", "unicode_categories", ] @@ -3542,12 +3439,12 @@ dependencies = [ [[package]] name = "stability" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ff9eaf853dec4c8802325d8b6d3dffa86cc707fd7a1a4cdbf416e13b061787a" +checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -3608,9 +3505,9 @@ checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" [[package]] name = "strum" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ "strum_macros", ] @@ -3625,14 +3522,14 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "supports-color" @@ -3668,9 +3565,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", @@ -3679,20 +3576,9 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "synstructure" -version = "0.13.1" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" [[package]] name = "tabled" @@ -3775,22 +3661,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -3843,16 +3729,6 @@ dependencies = [ "crunchy", ] -[[package]] -name = "tinystr" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" -dependencies = [ - "displaydoc", - "zerovec", -] - [[package]] name = "tinyvec" version = "1.8.0" @@ -3870,42 +3746,41 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.38.0" +version = "1.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +checksum = "d040ac2b29ab03b09d4129c2f5bbd012a3ac2f79d38ff506a4bf8dd34b0eac8a" dependencies = [ "backtrace", "bytes", "libc", - "mio", - "num_cpus", + "mio 1.0.1", "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2", "tokio-macros", "tracing", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] name = "tokio-rustls" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.22.4", + "rustls 0.23.12", "rustls-pki-types", "tokio", ] @@ -3936,21 +3811,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.14" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +checksum = "81967dd0dd2c1ab0bc3468bd7caecc32b8a4aa47d0c8c695d8c2b2108168d62c" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.14", + "toml_edit 0.22.17", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "f8fb9f64314842840f1d940ac544da178732128f1c78c21772e876579e0da1db" dependencies = [ "serde", ] @@ -3968,15 +3843,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.14" +version = "0.22.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" +checksum = "8d9f8729f5aea9562aac1cc0441f5d6de3cff1ee0c5d67293eeca5eb36ee7c16" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.13", + "winnow 0.6.16", ] [[package]] @@ -4038,7 +3913,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -4100,9 +3975,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tui-textarea" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e38ced1f941a9cfc923fbf2fe6858443c42cc5220bfd35bdd3648371e7bd8e" +checksum = "4a13589ef83273780b53a0e0be49282cb5d9cc10727b6c580e8f11366ccb460c" dependencies = [ "crossterm 0.27.0", "ratatui", @@ -4161,11 +4036,12 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-truncate" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5fbabedabe362c618c714dbefda9927b5afc8e2a8102f47f081089a9019226" +checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf" dependencies = [ "itertools", + "unicode-segmentation", "unicode-width", ] @@ -4199,12 +4075,12 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.1" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c25da092f0a868cdf09e8674cd3b7ef3a7d92a24253e663a2fb85e2496de56" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", - "idna 1.0.0", + "idna 0.5.0", "percent-encoding", ] @@ -4220,18 +4096,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - [[package]] name = "utf8parse" version = "0.2.2" @@ -4252,9 +4116,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "want" @@ -4292,7 +4156,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", "wasm-bindgen-shared", ] @@ -4326,7 +4190,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4355,9 +4219,9 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c452ad30530b54a4d8e71952716a212b08efd0f3562baa66c29a618b07da7c3" +checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" dependencies = [ "rustls-pki-types", ] @@ -4446,7 +4310,7 @@ checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -4457,7 +4321,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -4468,7 +4332,7 @@ checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -4479,7 +4343,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -4669,9 +4533,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.13" +version = "0.6.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +checksum = "b480ae9340fc261e6be3e95a1ba86d54ae3f9171132a73ce8d4bbaf68339507c" dependencies = [ "memchr", ] @@ -4686,18 +4550,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - -[[package]] -name = "writeable" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" - [[package]] name = "xdg-home" version = "1.2.0" @@ -4714,30 +4566,6 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" -[[package]] -name = "yoke" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", - "synstructure", -] - [[package]] name = "zbus" version = "4.4.0" @@ -4780,7 +4608,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", "zvariant_utils", ] @@ -4797,43 +4625,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", -] - -[[package]] -name = "zerofrom" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", - "synstructure", + "syn 2.0.72", ] [[package]] @@ -4842,28 +4649,6 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" -[[package]] -name = "zerovec" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2cc8827d6c0994478a15c53f374f46fbd41bea663d809b14744bc42e6b109c" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97cf56601ee5052b4417d90c8755c6683473c926039908196cf35d99f893ebe7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - [[package]] name = "zvariant" version = "4.2.0" @@ -4886,7 +4671,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", "zvariant_utils", ] @@ -4898,5 +4683,5 @@ checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] diff --git a/Cargo.toml b/Cargo.toml index 7d457f9..083be23 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,7 +46,7 @@ html2text = { version = "^0" } pretty_assertions = { version = "^1" } paste = { version = "^1" } -ratatui = { version = "^0.26.3" } +ratatui = { version = "^0.27" } colored = { version = "^2" } diff --git a/crates/lcode-config/Cargo.toml b/crates/lcode-config/Cargo.toml index d66e01d..f60b0f9 100644 --- a/crates/lcode-config/Cargo.toml +++ b/crates/lcode-config/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lcode-config" -version = "0.3.14" +version = "0.3.13" license = "MIT OR Apache-2.0" description = "config mod for [lcode](https://crates.io/crates/lcode)" edition = { workspace = true } diff --git a/crates/lcode/Cargo.toml b/crates/lcode/Cargo.toml index fbac976..47a10c3 100644 --- a/crates/lcode/Cargo.toml +++ b/crates/lcode/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lcode" -version = "0.9.3" +version = "0.9.2" description = "An application of terminal write leetcode.δΈ€δΈͺη»ˆη«―εˆ·εŠ›ζ‰£ηš„εΊ”η”¨" documentation = "https://docs.rs/lcode" license = "Apache-2.0" @@ -53,7 +53,7 @@ clap = { version = "^4", default-features = false, features = [ ratatui = { workspace = true } crossterm = { workspace = true } -tui-textarea = { version = "^0.4" } +tui-textarea = { version = "^0.5" } # Shit, decode leetcode avator error: `InvalidSignature` # ratatui-image = { version = "^1", default-features = true } diff --git a/crates/lcode/src/mytui/ui/edit_ui.rs b/crates/lcode/src/mytui/ui/edit_ui.rs index 1848912..fc03e5f 100644 --- a/crates/lcode/src/mytui/ui/edit_ui.rs +++ b/crates/lcode/src/mytui/ui/edit_ui.rs @@ -4,6 +4,8 @@ use lcode_config::global::{G_THEME, G_USER_CONFIG}; use leetcode_api::render::Render; use ratatui::{prelude::*, widgets::*}; +use self::style::Styled; + use super::title_block; use crate::{ app::inner::App, diff --git a/crates/lcode/src/mytui/ui/filter_topic.rs b/crates/lcode/src/mytui/ui/filter_topic.rs index 108c066..74b0484 100644 --- a/crates/lcode/src/mytui/ui/filter_topic.rs +++ b/crates/lcode/src/mytui/ui/filter_topic.rs @@ -13,6 +13,8 @@ use crate::{ }, }; +use self::style::Styled; + pub fn draw_difficults(f: &mut Frame, app: &mut App, area: Rect) { let items = app .topic diff --git a/crates/lcode/src/mytui/ui/select_ui.rs b/crates/lcode/src/mytui/ui/select_ui.rs index dff78b0..a7f6e83 100644 --- a/crates/lcode/src/mytui/ui/select_ui.rs +++ b/crates/lcode/src/mytui/ui/select_ui.rs @@ -10,6 +10,8 @@ use crate::{ }, }; +use self::style::Styled; + /// some info pub fn draw_msg(f: &mut Frame, app: &mut App, area: Rect) { let (msg, style) = match app.select.inputline.mode { diff --git a/crates/leetcode-api/Cargo.toml b/crates/leetcode-api/Cargo.toml index 1f0f17f..5c8954b 100644 --- a/crates/leetcode-api/Cargo.toml +++ b/crates/leetcode-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "leetcode-api" -version = "0.4.1" +version = "0.4.0" description = "leetcode api" license = "MIT" edition = { workspace = true } From e5458fae9c24f29495f76cb93cbc23ce0e0224f8 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Fri, 26 Jul 2024 15:35:55 +0000 Subject: [PATCH 12/13] fmt: with nightly rustfmt --- crates/lcode/src/mytui/ui/edit_ui.rs | 1 - crates/lcode/src/mytui/ui/filter_topic.rs | 3 +-- crates/lcode/src/mytui/ui/select_ui.rs | 3 +-- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/crates/lcode/src/mytui/ui/edit_ui.rs b/crates/lcode/src/mytui/ui/edit_ui.rs index fc03e5f..dd76cf4 100644 --- a/crates/lcode/src/mytui/ui/edit_ui.rs +++ b/crates/lcode/src/mytui/ui/edit_ui.rs @@ -5,7 +5,6 @@ use leetcode_api::render::Render; use ratatui::{prelude::*, widgets::*}; use self::style::Styled; - use super::title_block; use crate::{ app::inner::App, diff --git a/crates/lcode/src/mytui/ui/filter_topic.rs b/crates/lcode/src/mytui/ui/filter_topic.rs index 74b0484..1c5dd47 100644 --- a/crates/lcode/src/mytui/ui/filter_topic.rs +++ b/crates/lcode/src/mytui/ui/filter_topic.rs @@ -5,6 +5,7 @@ use ratatui::{ }; use rayon::prelude::*; +use self::style::Styled; use crate::{ app::{inner::App, Tab2Panel}, mytui::{ @@ -13,8 +14,6 @@ use crate::{ }, }; -use self::style::Styled; - pub fn draw_difficults(f: &mut Frame, app: &mut App, area: Rect) { let items = app .topic diff --git a/crates/lcode/src/mytui/ui/select_ui.rs b/crates/lcode/src/mytui/ui/select_ui.rs index a7f6e83..48e7a1b 100644 --- a/crates/lcode/src/mytui/ui/select_ui.rs +++ b/crates/lcode/src/mytui/ui/select_ui.rs @@ -2,6 +2,7 @@ use lcode_config::global::G_THEME; use ratatui::{prelude::*, widgets::*}; use rayon::prelude::*; +use self::style::Styled; use crate::{ app::inner::App, mytui::{ @@ -10,8 +11,6 @@ use crate::{ }, }; -use self::style::Styled; - /// some info pub fn draw_msg(f: &mut Frame, app: &mut App, area: Rect) { let (msg, style) = match app.select.inputline.mode { From ae85e9b911d97eeaeb61b6a6662dfe952197f774 Mon Sep 17 00:00:00 2001 From: saying Date: Fri, 26 Jul 2024 23:45:30 +0800 Subject: [PATCH 13/13] ci(toolchain): use stable rust toolchain --- .github/workflows/clippy.yml | 4 ++-- .github/workflows/release.yml | 12 ++++++------ .github/workflows/test.yml | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/clippy.yml b/.github/workflows/clippy.yml index 5cb6622..143ddea 100644 --- a/.github/workflows/clippy.yml +++ b/.github/workflows/clippy.yml @@ -13,14 +13,14 @@ jobs: strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] - rust: [nightly] + rust: [stable] steps: - uses: actions/checkout/@v4 - name: Install Toolchain uses: dtolnay/rust-toolchain@master with: - toolchain: nightly + toolchain: stable components: clippy - name: Rust Cache diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c2fd944..2e1cedf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,10 +20,10 @@ jobs: - name: Fetch Repository uses: actions/checkout@v4 - - name: Install Nightly Rust Toolchain + - name: Install Stable Rust Toolchain uses: dtolnay/rust-toolchain@master with: - toolchain: nightly + toolchain: stable - name: Rust version id: rustc-version @@ -75,10 +75,10 @@ jobs: - name: Rust Cache uses: Swatinem/rust-cache@v2 - - name: Install Nightly Rust Toolchain + - name: Install Stable Rust Toolchain uses: dtolnay/rust-toolchain@master with: - toolchain: nightly + toolchain: stable - name: Install jql uses: taiki-e/install-action@v2 @@ -155,10 +155,10 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Install Nightly Rust Toolchain + - name: Install Stable Rust Toolchain uses: dtolnay/rust-toolchain@master with: - toolchain: nightly + toolchain: stable targets: ${{ matrix.target }} - name: Rust Cache diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 768c935..69c3444 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,14 +17,14 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] - rust: [nightly] + rust: [stable] steps: - uses: actions/checkout/@v4 - name: Rust Toolchain uses: dtolnay/rust-toolchain@master with: - toolchain: nightly + toolchain: stable - name: Rust Cache if: startsWith(matrix.os, 'ubuntu-')