diff --git a/Cargo.toml b/Cargo.toml index 0591c07..0d20032 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,13 +1,13 @@ [workspace.package] -edition = "2021" +edition = "2024" authors = ["saying121 "] homepage = "https://github.com/saying121/lcode" -rust-version = "1.80.1" +rust-version = "1.85" repository = "https://github.com/saying121/lcode" [workspace] members = ["crates/*"] -resolver = "2" +resolver = "3" exclude = [".github", "sample/"] [profile.release] diff --git a/crates/key_parse/Cargo.toml b/crates/key_parse/Cargo.toml index d901f65..ead26d5 100644 --- a/crates/key_parse/Cargo.toml +++ b/crates/key_parse/Cargo.toml @@ -7,7 +7,7 @@ edition = { workspace = true } authors = { workspace = true } homepage = { workspace = true } repository = { workspace = true } -rust-version = "1.77" +rust-version = { workspace = true } keywords = ["vim", "keymap"] categories = ["config"] readme = "./README.md" diff --git a/crates/key_parse/src/key_parser.rs b/crates/key_parse/src/key_parser.rs index ff6451e..479e87f 100644 --- a/crates/key_parse/src/key_parser.rs +++ b/crates/key_parse/src/key_parser.rs @@ -1,4 +1,4 @@ -#![allow(clippy::string_slice)] +#![allow(clippy::string_slice, reason = "todo: make it more grace")] use crossterm::event::KeyCode; use miette::bail; diff --git a/crates/lcode-config/src/config/read_config.rs b/crates/lcode-config/src/config/read_config.rs index 84c9d51..36f4fe4 100644 --- a/crates/lcode-config/src/config/read_config.rs +++ b/crates/lcode-config/src/config/read_config.rs @@ -1,10 +1,10 @@ -use std::fs::{self, write, OpenOptions}; +use std::fs::{self, OpenOptions, write}; use miette::{Context, IntoDiagnostic, Result}; -use super::{global::*, user_nested::Suffix, LcodeConfig}; +use super::{LcodeConfig, global::*, user_nested::Suffix}; use crate::{ - config::{user_nested::Urls, Config}, + config::{Config, user_nested::Urls}, keymap::TuiKeyMap, }; diff --git a/crates/lcode-config/src/config/user_serializes.rs b/crates/lcode-config/src/config/user_serializes.rs index 8973d27..3c6de1d 100644 --- a/crates/lcode-config/src/config/user_serializes.rs +++ b/crates/lcode-config/src/config/user_serializes.rs @@ -15,7 +15,7 @@ where }; Ok(res) } -#[expect(clippy::trivially_copy_pass_by_ref)] +#[expect(clippy::trivially_copy_pass_by_ref, reason = "follow signature")] pub fn serialize(v: &Suffix, serializer: S) -> Result where S: Serializer, diff --git a/crates/lcode-config/src/theme/mod.rs b/crates/lcode-config/src/theme/mod.rs index 7b8f9b8..519f0ba 100644 --- a/crates/lcode-config/src/theme/mod.rs +++ b/crates/lcode-config/src/theme/mod.rs @@ -1,4 +1,4 @@ -#![allow(clippy::module_inception)] +#![allow(clippy::module_inception, reason = "that's ok")] use self::theme::{Edit, Info, Select, Tab, TopicTags}; pub(crate) mod theme; diff --git a/crates/lcode-config/tests/serde_config_work.rs b/crates/lcode-config/tests/serde_config_work.rs index f0bf9b6..09d731e 100644 --- a/crates/lcode-config/tests/serde_config_work.rs +++ b/crates/lcode-config/tests/serde_config_work.rs @@ -1,5 +1,5 @@ use lcode_config::{ - config::{user_nested::Suffix, LcodeConfig}, + config::{LcodeConfig, user_nested::Suffix}, global::G_USER_CONFIG, }; use miette::Result; diff --git a/crates/lcode/src/app/dispatch/handle_key.rs b/crates/lcode/src/app/dispatch/handle_key.rs index 422ba3c..46f4827 100644 --- a/crates/lcode/src/app/dispatch/handle_key.rs +++ b/crates/lcode/src/app/dispatch/handle_key.rs @@ -2,9 +2,9 @@ use crossterm::event::{Event as CrossEvent, KeyCode, KeyEvent, KeyModifiers}; use lcode_config::{global::G_USER_CONFIG, keymap::*}; use miette::Result; -use crate::app::{inner::App, Tab2Panel, TuiIndex, TuiMode}; +use crate::app::{Tab2Panel, TuiIndex, TuiMode, inner::App}; -impl<'app_lf> App<'app_lf> { +impl App<'_> { pub async fn handle_key(&mut self, keyevent: KeyEvent) { let temp = if matches!(self.tab_index, TuiIndex::Select) && matches!(self.select.inputline.mode, TuiMode::Insert) diff --git a/crates/lcode/src/app/edit/cmds/button.rs b/crates/lcode/src/app/edit/cmds/button.rs index cf7f799..d21bf9d 100644 --- a/crates/lcode/src/app/edit/cmds/button.rs +++ b/crates/lcode/src/app/edit/cmds/button.rs @@ -31,7 +31,7 @@ impl ButState { } impl ButState { - #[expect(dead_code)] + #[expect(dead_code, reason = "util fn")] pub fn open(&mut self) { self.show = true; } diff --git a/crates/lcode/src/app/edit/cmds/codeblock.rs b/crates/lcode/src/app/edit/cmds/codeblock.rs index 70647b1..3d02bc2 100644 --- a/crates/lcode/src/app/edit/cmds/codeblock.rs +++ b/crates/lcode/src/app/edit/cmds/codeblock.rs @@ -11,7 +11,7 @@ pub struct CodeBlock<'block> { pub mode: TuiMode, } -impl<'block> CodeBlock<'block> { +impl CodeBlock<'_> { pub fn quit_edit_tui(&mut self) -> bool { self.mode = TuiMode::OutEdit; true diff --git a/crates/lcode/src/app/edit/mod.rs b/crates/lcode/src/app/edit/mod.rs index 8c2986e..afc5944 100644 --- a/crates/lcode/src/app/edit/mod.rs +++ b/crates/lcode/src/app/edit/mod.rs @@ -16,7 +16,7 @@ pub struct EditCode<'tab1> { pub test: test::TestState, } -impl<'tab1> EditCode<'tab1> { +impl EditCode<'_> { pub fn normal_map(&mut self, event: CrossEvent) -> bool { self.code_block.normal_map(event) } @@ -42,7 +42,7 @@ impl<'tab1> EditCode<'tab1> { } // Show only one pop view every time. -impl<'tab1> EditCode<'tab1> { +impl EditCode<'_> { pub fn toggle_menu(&mut self) -> bool { self.button.toggle(); self.test.close(); @@ -63,7 +63,7 @@ impl<'tab1> EditCode<'tab1> { } } -impl<'tab1> EditCode<'tab1> { +impl EditCode<'_> { pub fn close_pop(&mut self) -> bool { if self.test.show { self.test.close(); @@ -148,7 +148,7 @@ impl<'tab1> EditCode<'tab1> { true } - #[allow(non_snake_case)] + #[expect(non_snake_case, reason = "semantic")] pub fn vertical_scroll_G(&mut self) -> bool { if self.submit.show { self.submit.last(); diff --git a/crates/lcode/src/app/impl_app/edit_qs.rs b/crates/lcode/src/app/impl_app/edit_qs.rs index 3223d74..0ae0422 100644 --- a/crates/lcode/src/app/impl_app/edit_qs.rs +++ b/crates/lcode/src/app/impl_app/edit_qs.rs @@ -1,12 +1,12 @@ use leetcode_api::{ glob_leetcode, - leetcode::{question::qs_detail::Question, resps::run_res::*, IdSlug}, + leetcode::{IdSlug, question::qs_detail::Question, resps::run_res::*}, }; use tracing::error; use crate::{app::inner::App, mytui::myevent::UserEvent}; -impl<'app_lf> App<'app_lf> { +impl App<'_> { pub fn get_qs_detail(&self, idslug: IdSlug, force: bool) { let eve_tx = self.events.tx.clone(); tokio::spawn(async move { diff --git a/crates/lcode/src/app/impl_app/get_index.rs b/crates/lcode/src/app/impl_app/get_index.rs index d3c3fac..8668237 100644 --- a/crates/lcode/src/app/impl_app/get_index.rs +++ b/crates/lcode/src/app/impl_app/get_index.rs @@ -14,7 +14,7 @@ use crate::{ mytui::myevent::UserEvent, }; -impl<'app_lf> App<'app_lf> { +impl App<'_> { pub fn sync_index(&mut self) -> bool { if self.select.sync_bar.show { return false; diff --git a/crates/lcode/src/app/impl_app/get_info.rs b/crates/lcode/src/app/impl_app/get_info.rs index 6914d9f..bdd42af 100644 --- a/crates/lcode/src/app/impl_app/get_info.rs +++ b/crates/lcode/src/app/impl_app/get_info.rs @@ -9,12 +9,12 @@ use leetcode_api::{ use miette::IntoDiagnostic; use notify_rust::Notification; use ratatui::prelude::*; -use ratatui_image::{picker::Picker, protocol::StatefulProtocol, thread::ThreadProtocol, Resize}; +use ratatui_image::{Resize, picker::Picker, protocol::StatefulProtocol, thread::ThreadProtocol}; use tokio::join; use crate::{app::inner::App, mytui::myevent::UserEvent}; -impl<'app> App<'app> { +impl App<'_> { /// get use info /// If haven't checked in, check in it. pub fn user_info_and_checkin(&self) { @@ -138,11 +138,13 @@ impl<'app> App<'app> { // Resize and encode in background thread. let tx_main_render = self.events.tx.clone(); - thread::spawn(move || loop { - if let Ok((mut protocol, resize, area)) = rec_worker.recv() { - protocol.resize_encode(&resize, None, area); - if let Err(e) = tx_main_render.send(UserEvent::RedrawImg(protocol)) { - tracing::error!("{e}"); + thread::spawn(move || { + loop { + if let Ok((mut protocol, resize, area)) = rec_worker.recv() { + protocol.resize_encode(&resize, None, area); + if let Err(e) = tx_main_render.send(UserEvent::RedrawImg(protocol)) { + tracing::error!("{e}"); + } } } }); diff --git a/crates/lcode/src/app/impl_app/impl_tui.rs b/crates/lcode/src/app/impl_app/impl_tui.rs index 271f0ac..5de4cf8 100644 --- a/crates/lcode/src/app/impl_app/impl_tui.rs +++ b/crates/lcode/src/app/impl_app/impl_tui.rs @@ -3,7 +3,7 @@ use crate::{ mytui::{myevent::EventsHandler, term::Term}, }; -impl<'app_lf> App<'app_lf> { +impl App<'_> { /// send info for render tui pub fn render(&self) { self.events.render(); diff --git a/crates/lcode/src/app/info/mod.rs b/crates/lcode/src/app/info/mod.rs index 69453ef..5ae640b 100644 --- a/crates/lcode/src/app/info/mod.rs +++ b/crates/lcode/src/app/info/mod.rs @@ -21,7 +21,7 @@ pub struct Info<'tab3> { } // keymaps -impl<'tab3> Info<'tab3> { +impl Info<'_> { pub fn new() -> Self { let mut pat = Vec::with_capacity(G_USER_CONFIG.keymap.map_set.len() + 1); pat.push(ListItem::new( diff --git a/crates/lcode/src/app/inner.rs b/crates/lcode/src/app/inner.rs index aa25c42..8a85948 100644 --- a/crates/lcode/src/app/inner.rs +++ b/crates/lcode/src/app/inner.rs @@ -1,6 +1,6 @@ use leetcode_api::{ dao::{query::Query, save_info::FileInfo}, - leetcode::{question::qs_detail::Question, IdSlug}, + leetcode::{IdSlug, question::qs_detail::Question}, }; use miette::{IntoDiagnostic, Result}; use ratatui_image::thread::ThreadProtocol; @@ -10,7 +10,7 @@ use tokio::{ }; use tui_textarea::TextArea; -use super::{dispatch::next_key, edit::EditCode, info, select, topic, TuiIndex}; +use super::{TuiIndex, dispatch::next_key, edit::EditCode, info, select, topic}; use crate::{ editor::{CodeTestFile, Editor}, glob_leetcode, @@ -40,7 +40,7 @@ pub struct App<'app> { pub events: EventsHandler, } -impl<'app_lf> App<'app_lf> { +impl App<'_> { pub fn add_test_case(&mut self) -> bool { let id = self .edit @@ -69,7 +69,7 @@ impl<'app_lf> App<'app_lf> { true } } -impl<'app_lf> App<'app_lf> { +impl App<'_> { /// edit cursor qs with outer editor, for select tab pub async fn select_edit_cur_qs(&mut self) -> Result<()> { let id = self.select.current_qs(); @@ -114,7 +114,7 @@ impl<'app_lf> App<'app_lf> { } // tab1 edit -impl<'app_lf> App<'app_lf> { +impl App<'_> { /// from ui to file pub async fn save_code(&mut self) -> Result<()> { self.save_code = true; diff --git a/crates/lcode/src/app/mod.rs b/crates/lcode/src/app/mod.rs index 009949b..9080f5f 100644 --- a/crates/lcode/src/app/mod.rs +++ b/crates/lcode/src/app/mod.rs @@ -58,7 +58,7 @@ pub enum TuiMode { /// input panel Insert, /// input panel - #[expect(dead_code)] + #[expect(dead_code, reason = "todo use it")] Visual, /// not enter input diff --git a/crates/lcode/src/app/select/cmds/inputline.rs b/crates/lcode/src/app/select/cmds/inputline.rs index 72a99f7..98f4b4d 100644 --- a/crates/lcode/src/app/select/cmds/inputline.rs +++ b/crates/lcode/src/app/select/cmds/inputline.rs @@ -10,7 +10,7 @@ pub struct InputLine<'line> { pub text_line: TextArea<'line>, } -impl<'line> InputLine<'line> { +impl InputLine<'_> { pub fn handle_input(&mut self, input: Input) -> bool { self.text_line.input(input) } diff --git a/crates/lcode/src/app/select/mod.rs b/crates/lcode/src/app/select/mod.rs index 65031c0..d010901 100644 --- a/crates/lcode/src/app/select/mod.rs +++ b/crates/lcode/src/app/select/mod.rs @@ -18,7 +18,7 @@ pub struct SelectQS<'tab0> { pub inputline: inputline::InputLine<'tab0>, } -impl<'tab0> SelectQS<'tab0> { +impl SelectQS<'_> { pub fn keymap_insert(&mut self, event: CrossEvent) -> bool { match event.into() { Input { key: tui_textarea::Key::Esc, .. } => self.out_edit(), diff --git a/crates/lcode/src/app/topic/cmds/intputline.rs b/crates/lcode/src/app/topic/cmds/intputline.rs index adce7e5..93ff061 100644 --- a/crates/lcode/src/app/topic/cmds/intputline.rs +++ b/crates/lcode/src/app/topic/cmds/intputline.rs @@ -10,7 +10,7 @@ pub struct InputLine<'line> { pub text_line: TextArea<'line>, } -impl<'line> InputLine<'line> { +impl InputLine<'_> { /// return if the input modified text contents or not pub fn handle_input(&mut self, input: Input) -> bool { self.text_line.input(input) diff --git a/crates/lcode/src/app/topic/mod.rs b/crates/lcode/src/app/topic/mod.rs index aab15b8..3c48124 100644 --- a/crates/lcode/src/app/topic/mod.rs +++ b/crates/lcode/src/app/topic/mod.rs @@ -73,7 +73,7 @@ pub struct TopicTagsQS<'tab2> { pub ac_status: Box<[PassStat]>, } -impl<'tab2> TopicTagsQS<'tab2> { +impl TopicTagsQS<'_> { pub fn keymap_insert(&mut self, event: CrossEvent) -> bool { match event.into() { Input { key: tui_textarea::Key::Esc, .. } => self.be_out_edit(), @@ -160,7 +160,7 @@ impl<'tab2> TopicTagsQS<'tab2> { } // for `difficulties` -impl<'tab2> TopicTagsQS<'tab2> { +impl TopicTagsQS<'_> { pub async fn toggle_diff(&mut self) -> bool { // the operate must trigger refresh self.difficulty.toggle_diff(); @@ -262,7 +262,7 @@ impl<'tab2> TopicTagsQS<'tab2> { } // all topic tags, add remove topic -impl<'tab2> TopicTagsQS<'tab2> { +impl TopicTagsQS<'_> { /// remove a topic and refresh question pub async fn rm_user_topic(&mut self) -> bool { let trigger = self.topic.rm_user_topic(); @@ -301,7 +301,7 @@ impl<'tab2> TopicTagsQS<'tab2> { } // filtered questions -impl<'tab2> TopicTagsQS<'tab2> { +impl TopicTagsQS<'_> { pub fn next_qs(&mut self) { self.question_state.next(); } @@ -322,7 +322,7 @@ impl<'tab2> TopicTagsQS<'tab2> { } // user topic tags -impl<'tab2> TopicTagsQS<'tab2> { +impl TopicTagsQS<'_> { pub fn prev_user_topic(&mut self) { self.topic.prev_user(); } diff --git a/crates/lcode/src/cli.rs b/crates/lcode/src/cli.rs index ed7f411..42d09ae 100644 --- a/crates/lcode/src/cli.rs +++ b/crates/lcode/src/cli.rs @@ -1,10 +1,10 @@ use std::io; use clap::{Args, Command, CommandFactory, Parser, Subcommand}; -use clap_complete::{generate, Generator, Shell}; +use clap_complete::{Generator, Shell, generate}; use colored::Colorize; use lcode_config::{ - config::{user_nested::Suffix, LcodeConfig}, + config::{LcodeConfig, user_nested::Suffix}, global::G_DATABASE_PATH, }; use leetcode_api::{leetcode::IdSlug, render::Render}; @@ -27,8 +27,8 @@ struct Cli { command: Option, } -fn print_completions(gen: G, cmd: &mut Command) { - generate(gen, cmd, cmd.get_name().to_owned(), &mut io::stdout()); +fn print_completions(genen: G, cmd: &mut Command) { + generate(genen, cmd, cmd.get_name().to_owned(), &mut io::stdout()); } #[derive(Debug)] diff --git a/crates/lcode/src/editor.rs b/crates/lcode/src/editor.rs index fe17346..0ebe3ce 100644 --- a/crates/lcode/src/editor.rs +++ b/crates/lcode/src/editor.rs @@ -7,7 +7,7 @@ use leetcode_api::{ }; use miette::{IntoDiagnostic, Result}; use tokio::{ - fs::{self, create_dir_all, OpenOptions}, + fs::{self, OpenOptions, create_dir_all}, io::AsyncWriteExt, }; use tracing::{debug, instrument}; diff --git a/crates/lcode/src/mytui/helper.rs b/crates/lcode/src/mytui/helper.rs index bc70fc6..8ef052e 100644 --- a/crates/lcode/src/mytui/helper.rs +++ b/crates/lcode/src/mytui/helper.rs @@ -1,6 +1,6 @@ use ratatui::{ prelude::*, - widgets::{block::Title, Block, Borders}, + widgets::{Block, Borders, block::Title}, }; /// helper function to create a bottom rect using up certain percentage of the available rect `r` diff --git a/crates/lcode/src/mytui/my_widget/botton.rs b/crates/lcode/src/mytui/my_widget/botton.rs index 41f92b2..3eec5d1 100644 --- a/crates/lcode/src/mytui/my_widget/botton.rs +++ b/crates/lcode/src/mytui/my_widget/botton.rs @@ -28,7 +28,7 @@ impl Default for ButtonStates { } } -impl<'a> Button<'a> { +impl Button<'_> { const fn colors(&self) -> (Color, Color, Color, Color) { let theme = self.theme; match self.state { @@ -39,7 +39,7 @@ impl<'a> Button<'a> { } } -impl<'a> Widget for Button<'a> { +impl Widget for Button<'_> { fn render(self, area: Rect, buf: &mut Buffer) { let (background, text, shadow, highlight) = self.colors(); buf.set_style(area, Style::new().bg(background).fg(text)); diff --git a/crates/lcode/src/mytui/term.rs b/crates/lcode/src/mytui/term.rs index c876e4e..80fcbc3 100644 --- a/crates/lcode/src/mytui/term.rs +++ b/crates/lcode/src/mytui/term.rs @@ -5,8 +5,8 @@ use std::{ }; use crossterm::{ - terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, ExecutableCommand, + terminal::{EnterAlternateScreen, LeaveAlternateScreen, disable_raw_mode, enable_raw_mode}, }; use miette::{IntoDiagnostic, Result}; use ratatui::prelude::*; diff --git a/crates/lcode/src/mytui/ui/edit_ui.rs b/crates/lcode/src/mytui/ui/edit_ui.rs index adbd91b..ddc7665 100644 --- a/crates/lcode/src/mytui/ui/edit_ui.rs +++ b/crates/lcode/src/mytui/ui/edit_ui.rs @@ -9,9 +9,9 @@ use super::title_block; use crate::{ app::inner::App, mytui::{ + TuiMode, helper::{self, centered_rect_percent}, my_widget::botton::{Button, Theme}, - TuiMode, }, }; diff --git a/crates/lcode/src/mytui/ui/filter_topic.rs b/crates/lcode/src/mytui/ui/filter_topic.rs index 13ee6e6..be0750f 100644 --- a/crates/lcode/src/mytui/ui/filter_topic.rs +++ b/crates/lcode/src/mytui/ui/filter_topic.rs @@ -8,10 +8,10 @@ use rayon::prelude::*; use self::style::Styled; use crate::{ - app::{inner::App, Tab2Panel}, + app::{Tab2Panel, inner::App}, mytui::{ - helper::{self, bottom_rect}, TuiMode, + helper::{self, bottom_rect}, }, }; diff --git a/crates/lcode/src/mytui/ui/info.rs b/crates/lcode/src/mytui/ui/info.rs index a0fdd94..e493d0d 100644 --- a/crates/lcode/src/mytui/ui/info.rs +++ b/crates/lcode/src/mytui/ui/info.rs @@ -1,6 +1,6 @@ use lcode_config::global::G_THEME; use ratatui::{prelude::*, widgets::*}; -use ratatui_image::{thread::ThreadImage, Resize}; +use ratatui_image::{Resize, thread::ThreadImage}; use crate::{app::inner::App, mytui::helper}; diff --git a/crates/lcode/src/mytui/ui/mod.rs b/crates/lcode/src/mytui/ui/mod.rs index 7e4e9e5..7f985d3 100644 --- a/crates/lcode/src/mytui/ui/mod.rs +++ b/crates/lcode/src/mytui/ui/mod.rs @@ -7,7 +7,7 @@ use lcode_config::global::G_THEME; use ratatui::{prelude::*, widgets::*}; use super::helper::*; -use crate::app::{inner::App, TuiIndex}; +use crate::app::{TuiIndex, inner::App}; pub(super) fn start_ui(f: &mut Frame, app: &mut App) { let constraints = [Constraint::Length(2), Constraint::Min(1)]; diff --git a/crates/lcode/src/mytui/ui/select_ui.rs b/crates/lcode/src/mytui/ui/select_ui.rs index 82dee51..729cf44 100644 --- a/crates/lcode/src/mytui/ui/select_ui.rs +++ b/crates/lcode/src/mytui/ui/select_ui.rs @@ -6,8 +6,8 @@ use self::style::Styled; use crate::{ app::inner::App, mytui::{ - helper::{self, bottom_rect, centered_rect_percent}, TuiMode, + helper::{self, bottom_rect, centered_rect_percent}, }, }; diff --git a/crates/lcode/src/panic_hook.rs b/crates/lcode/src/panic_hook.rs index ff06e10..0c00de0 100644 --- a/crates/lcode/src/panic_hook.rs +++ b/crates/lcode/src/panic_hook.rs @@ -3,7 +3,7 @@ use std::panic; use lcode_config::global; use tracing_appender::rolling; use tracing_subscriber::{ - fmt, prelude::__tracing_subscriber_SubscriberExt, util::SubscriberInitExt, EnvFilter, Registry, + EnvFilter, Registry, fmt, prelude::__tracing_subscriber_SubscriberExt, util::SubscriberInitExt, }; use crate::mytui::term::Term; diff --git a/crates/leetcode-api/src/dao/mod.rs b/crates/leetcode-api/src/dao/mod.rs index d0bdc7b..9f0fc2b 100644 --- a/crates/leetcode-api/src/dao/mod.rs +++ b/crates/leetcode-api/src/dao/mod.rs @@ -6,8 +6,8 @@ use std::future::Future; use lcode_config::global::G_DATABASE_PATH; use miette::{IntoDiagnostic, Result}; use sea_orm::{ - sea_query::OnConflict, ActiveModelTrait, ConnectionTrait, Database, DatabaseConnection, - EntityTrait, IntoActiveModel, ModelTrait, Schema, + ActiveModelTrait, ConnectionTrait, Database, DatabaseConnection, EntityTrait, IntoActiveModel, + ModelTrait, Schema, sea_query::OnConflict, }; use tokio::{join, sync::OnceCell}; use tracing::{debug, error}; diff --git a/crates/leetcode-api/src/dao/query.rs b/crates/leetcode-api/src/dao/query.rs index a63171a..cb8c15e 100644 --- a/crates/leetcode-api/src/dao/query.rs +++ b/crates/leetcode-api/src/dao/query.rs @@ -1,6 +1,6 @@ use miette::{IntoDiagnostic, Result}; use sea_orm::{ - sea_query::Expr, ColumnTrait, EntityTrait, FromQueryResult, QueryFilter, QuerySelect, + ColumnTrait, EntityTrait, FromQueryResult, QueryFilter, QuerySelect, sea_query::Expr, }; use tracing::debug; diff --git a/crates/leetcode-api/src/dao/save_info.rs b/crates/leetcode-api/src/dao/save_info.rs index 9bc1502..8902380 100644 --- a/crates/leetcode-api/src/dao/save_info.rs +++ b/crates/leetcode-api/src/dao/save_info.rs @@ -7,14 +7,14 @@ use std::{ use lcode_config::global::G_USER_CONFIG; use miette::{IntoDiagnostic, Result}; use tokio::{ - fs::{create_dir_all, File, OpenOptions}, + fs::{File, OpenOptions, create_dir_all}, io::{AsyncReadExt, AsyncWriteExt}, }; use tracing::{instrument, trace}; use crate::{ entities::*, - leetcode::{question::qs_detail::Question, IdSlug}, + leetcode::{IdSlug, question::qs_detail::Question}, render::Render, }; diff --git a/crates/leetcode-api/src/entities/qs_tag.rs b/crates/leetcode-api/src/entities/qs_tag.rs index dba077f..7ba06c8 100644 --- a/crates/leetcode-api/src/entities/qs_tag.rs +++ b/crates/leetcode-api/src/entities/qs_tag.rs @@ -1,4 +1,4 @@ -use sea_orm::{entity::prelude::*, sea_query::OnConflict, IntoActiveModel}; +use sea_orm::{IntoActiveModel, entity::prelude::*, sea_query::OnConflict}; use serde::{Deserialize, Serialize}; use tracing::error; diff --git a/crates/leetcode-api/src/leetcode/headers.rs b/crates/leetcode-api/src/leetcode/headers.rs index f5550ea..b538834 100644 --- a/crates/leetcode-api/src/leetcode/headers.rs +++ b/crates/leetcode-api/src/leetcode/headers.rs @@ -2,7 +2,7 @@ use std::str::FromStr; use decrypt_cookies::{browser::cookies::LeetCodeCookies, prelude::*}; use lcode_config::global::G_USER_CONFIG; -use miette::{bail, IntoDiagnostic, Result}; +use miette::{IntoDiagnostic, Result, bail}; use reqwest::header::{HeaderMap, HeaderName, HeaderValue}; /// headers for `LeetCode` reqwest 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 33bf59d..b5aa2bf 100644 --- a/crates/leetcode-api/src/leetcode/impl_lc/get_qs.rs +++ b/crates/leetcode-api/src/leetcode/impl_lc/get_qs.rs @@ -1,24 +1,24 @@ use std::sync::atomic::Ordering; -use futures::{stream, StreamExt}; +use futures::{StreamExt, stream}; use lcode_config::global::G_USER_CONFIG; use miette::Result; use tracing::{debug, error}; use crate::{ - dao::{query::Query, save_info::FileInfo, InsertToDB}, + Json, + dao::{InsertToDB, query::Query, save_info::FileInfo}, entities::index, leetcode::{ + CATEGORIES, CUR_QS_INDEX_NUM, CUR_TOPIC_QS_INDEX_NUM, IdSlug, LeetCode, TOTAL_QS_INDEX_NUM, + TOTAL_TOPIC_QS_INDEX_NUM, graphqls::GraphqlQuery, question::{ pb_list::PbListData, qs_detail::{Question, QuestionData}, qs_index::Problems, }, - IdSlug, LeetCode, CATEGORIES, CUR_QS_INDEX_NUM, CUR_TOPIC_QS_INDEX_NUM, TOTAL_QS_INDEX_NUM, - TOTAL_TOPIC_QS_INDEX_NUM, }, - Json, }; impl LeetCode { diff --git a/crates/leetcode-api/src/leetcode/impl_lc/judge.rs b/crates/leetcode-api/src/leetcode/impl_lc/judge.rs index 929f89f..74f7ba5 100644 --- a/crates/leetcode-api/src/leetcode/impl_lc/judge.rs +++ b/crates/leetcode-api/src/leetcode/impl_lc/judge.rs @@ -7,16 +7,16 @@ use tokio::{join, time::sleep}; use tracing::{debug, trace}; use crate::{ + Json, dao::{query::Query, save_info::FileInfo}, leetcode::{ + IdSlug, LeetCode, graphqls::GraphqlQuery, resps::{ run_res::*, submit_list::{SubmissionData, SubmissionList}, }, - IdSlug, LeetCode, }, - Json, }; impl LeetCode { @@ -219,7 +219,7 @@ impl LeetCode { .expect("get_user_code regex new failed"); // sep code just get needed - #[expect(clippy::option_if_let_else)] + #[expect(clippy::option_if_let_else, reason = "borrow checker")] let res = match code_re.captures(&code) { Some(val) => val["code"].to_owned(), None => code, diff --git a/crates/leetcode-api/src/leetcode/impl_lc/user_info.rs b/crates/leetcode-api/src/leetcode/impl_lc/user_info.rs index d61144f..bf3f52a 100644 --- a/crates/leetcode-api/src/leetcode/impl_lc/user_info.rs +++ b/crates/leetcode-api/src/leetcode/impl_lc/user_info.rs @@ -10,7 +10,9 @@ use tokio::{ }; use crate::{ + Json, leetcode::{ + LeetCode, graphqls::*, headers::Headers, resps::{ @@ -18,9 +20,7 @@ use crate::{ pass_qs::{PassData, Passdata}, user_data::{GlobData, UserStatus}, }, - LeetCode, }, - Json, }; // some info diff --git a/crates/leetcode-api/src/leetcode/mod.rs b/crates/leetcode-api/src/leetcode/mod.rs index 83641ae..1ca9605 100644 --- a/crates/leetcode-api/src/leetcode/mod.rs +++ b/crates/leetcode-api/src/leetcode/mod.rs @@ -6,10 +6,10 @@ pub mod resps; use std::{fmt::Display, sync::atomic::AtomicU32, time::Duration}; -use miette::{miette, IntoDiagnostic, Result}; +use miette::{IntoDiagnostic, Result, miette}; use reqwest::{ - header::{HeaderMap, HeaderValue}, Client, ClientBuilder, + header::{HeaderMap, HeaderValue}, }; use serde::de::DeserializeOwned; use tracing::{debug, trace}; diff --git a/crates/leetcode-api/src/leetcode/question/impl_insert_db.rs b/crates/leetcode-api/src/leetcode/question/impl_insert_db.rs index 8fd3aaa..a14c4a6 100644 --- a/crates/leetcode-api/src/leetcode/question/impl_insert_db.rs +++ b/crates/leetcode-api/src/leetcode/question/impl_insert_db.rs @@ -1,9 +1,9 @@ -use sea_orm::{sea_query::OnConflict, EntityTrait, IntoActiveModel}; +use sea_orm::{EntityTrait, IntoActiveModel, sea_query::OnConflict}; use tracing::error; use super::{pb_list::NewIndex, qs_index::QsIndex}; use crate::{ - dao::{glob_db, InsertToDB}, + dao::{InsertToDB, glob_db}, entities::{index, new_index, prelude::*, qs_tag, topic_tags}, }; diff --git a/crates/leetcode-api/src/render/qs_detail.rs b/crates/leetcode-api/src/render/qs_detail.rs index 020c697..7d578ca 100644 --- a/crates/leetcode-api/src/render/qs_detail.rs +++ b/crates/leetcode-api/src/render/qs_detail.rs @@ -7,7 +7,7 @@ use ratatui::{ text::{Line, Span}, }; -use super::{to_sub_sup_script, Render}; +use super::{Render, to_sub_sup_script}; use crate::leetcode::question::qs_detail::Question; impl Render for Question { diff --git a/crates/leetcode-api/src/render/run_res.rs b/crates/leetcode-api/src/render/run_res.rs index af4d6ee..b5da27b 100644 --- a/crates/leetcode-api/src/render/run_res.rs +++ b/crates/leetcode-api/src/render/run_res.rs @@ -243,14 +243,16 @@ impl Render for RunResult { status_msg_id.extend(total_correct_test_case); } if !self.status_memory.is_empty() { - let mut mem_time = vec![vec![ - " • Memory: ".into(), - self.status_memory - .as_str() - .bold() - .cyan(), - ] - .into()]; + let mut mem_time = vec![ + vec![ + " • Memory: ".into(), + self.status_memory + .as_str() + .bold() + .cyan(), + ] + .into(), + ]; if let Some(percentile) = self.memory_percentile { mem_time.push( vec![ diff --git a/crates/leetcode-api/tests/leetcode_work.rs b/crates/leetcode-api/tests/leetcode_work.rs index c0268ff..f3b2085 100644 --- a/crates/leetcode-api/tests/leetcode_work.rs +++ b/crates/leetcode-api/tests/leetcode_work.rs @@ -79,9 +79,11 @@ async fn get_user_code_work() { #[ignore] #[tokio::test(flavor = "multi_thread", worker_threads = 1)] async fn get_qs_detail_none() { - assert!(glob_leetcode() - .await - .get_qs_detail(IdSlug::Id(0), false, true) - .await - .is_err()); + assert!( + glob_leetcode() + .await + .get_qs_detail(IdSlug::Id(0), false, true) + .await + .is_err() + ); } diff --git a/crates/leetcode-api/tests/query_work.rs b/crates/leetcode-api/tests/query_work.rs index e3cde0f..47c3fa8 100644 --- a/crates/leetcode-api/tests/query_work.rs +++ b/crates/leetcode-api/tests/query_work.rs @@ -1,4 +1,4 @@ -#![expect(clippy::panic_in_result_fn)] +#![expect(clippy::panic_in_result_fn, reason = "tests")] use lcode_config::{config::user_nested::Suffix, global::G_USER_CONFIG}; use leetcode_api::{dao::query::*, entities::topic_tags}; @@ -27,9 +27,10 @@ async fn query_base() -> Result<()> { assert!(iter.next().unwrap().title_slug == "4sum-ii"); assert!(iter.next().unwrap().title_slug == "accounts-merge"); - assert!(res - .iter() - .any(|v| { v.title_slug == "two-sum" })); + assert!( + res.iter() + .any(|v| { v.title_slug == "two-sum" }) + ); Ok(()) } diff --git a/crates/leetcode-api/tests/sync_work.rs b/crates/leetcode-api/tests/sync_work.rs index 1af726f..74a8b4f 100644 --- a/crates/leetcode-api/tests/sync_work.rs +++ b/crates/leetcode-api/tests/sync_work.rs @@ -1,4 +1,4 @@ -#![allow(clippy::unwrap_used)] +#![allow(clippy::unwrap_used, reason = "tests")] use std::time::Duration;