Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 1d67017

Browse files
fix: clippy warning for rust 1.61 stable and feat: upgrade dep version (clearloop#76)
* fix: clippy warning for rust 1.61 stable * feat: upgrade dep version, and use Rust 2021 Edition
1 parent 2b373c0 commit 1d67017

File tree

17 files changed

+168
-154
lines changed

17 files changed

+168
-154
lines changed

‎Cargo.toml

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ path = "src/bin/lc.rs"
66
name = "leetcode-cli"
77
version = "0.3.11"
88
authors = ["clearloop <cdr.today@foxmail.com>"]
9-
edition = "2018"
9+
edition = "2021"
1010
description = "Leet your code in command-line."
1111
repository = "https://github.com/clearloop/leetcode-cli"
1212
license = "MIT"
@@ -16,38 +16,38 @@ keywords = ["cli", "games", "leetcode"]
1616
readme = './README.md'
1717

1818
[dependencies]
19-
async-trait = "0.1.41"
20-
tokio = "0.2.22"
21-
clap = "2.33.0"
22-
colored = "1.9.1"
23-
dirs = "2.0.2"
24-
env_logger = "0.7.1"
25-
escaper = "0.1.0"
26-
keyring = "0.8.0"
27-
log = "0.4"
28-
openssl = "0.10.26"
29-
pyo3 = { version = "0.8.5", optional = true }
30-
rand = "0.7.2"
31-
serde = { version = "1.0.104", features = ["derive"] }
32-
serde_json = "1.0.44"
33-
toml = "0.5.5"
34-
regex = "1"
19+
async-trait = "0.1.56"
20+
tokio = { version = "1", features = ["full"] }
21+
clap = { version = "3.2.8", features = ["cargo"] }
22+
colored = "2.0.0"
23+
dirs = "4.0.0"
24+
env_logger = "0.9.0"
25+
escaper = "0.1.1"
26+
keyring = "1.1.2"
27+
log = "0.4.17"
28+
openssl = "0.10.40"
29+
pyo3 = { version = "0.16.5", optional = true }
30+
rand = "0.8.5"
31+
serde = { version = "1.0.138", features = ["derive"] }
32+
serde_json = "1.0.82"
33+
toml = "0.5.9"
34+
regex = "1.5.6"
3535

3636
[dependencies.diesel]
37-
version = "1.4.3"
37+
version = "1.4.8"
3838
features = ["sqlite"]
3939

4040
[dependencies.reqwest]
41-
version = "0.10.3"
41+
version = "0.11.11"
4242
features = ["gzip", "json"]
4343

4444
[dev-dependencies.cargo-husky]
45-
version = "1"
45+
version = "1.5.0"
4646
default-features = false
4747
features = ["precommit-hook", "user-hooks"]
4848

4949
[features]
5050
pym = ["pyo3"]
5151

5252
[target.'cfg(target_family = "unix")'.dependencies]
53-
nix = "0.17.0"
53+
nix = "0.24.1"

‎src/bin/lc.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ use leetcode_cli::cli;
22
use tokio::runtime::Builder;
33

44
fn main() {
5-
if let Err(err) = Builder::new()
6-
.basic_scheduler()
5+
if let Err(err) = Builder::new_multi_thread()
76
.enable_all()
87
.build()
98
.expect("Build tokio runtime failed")

‎src/cache/mod.rs

Lines changed: 52 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ use self::sql::*;
99
use crate::{cfg, err::Error, plugins::LeetCode};
1010
use colored::Colorize;
1111
use diesel::prelude::*;
12+
use reqwest::Response;
1213
use serde::de::DeserializeOwned;
1314
use serde_json::Value;
1415
use std::collections::HashMap;
15-
use reqwest::Response;
1616

1717
/// sqlite connection
1818
pub fn conn(p: String) -> SqliteConnection {
@@ -60,32 +60,27 @@ impl Cache {
6060
Ok(())
6161
}
6262

63-
async fn get_user_info(&self) -> Result<(String,bool), Error> {
64-
let user = parser::user(
65-
self.clone().0
66-
.get_user_info().await?
67-
.json().await?
68-
);
63+
async fn get_user_info(&self) -> Result<(String, bool), Error> {
64+
let user = parser::user(self.clone().0.get_user_info().await?.json().await?);
6965
match user {
7066
None => Err(Error::NoneError),
7167
Some(None) => Err(Error::CookieError),
72-
Some(Some((s,b))) => Ok((s,b))
68+
Some(Some((s,b))) => Ok((s,b)),
7369
}
7470
}
7571

7672
async fn is_session_bad(&self) -> bool {
7773
// i.e. self.get_user_info().contains_err(Error::CookieError)
78-
match self.get_user_info().await {
79-
Err(Error::CookieError) => true,
80-
_ => false
81-
}
74+
matches!(self.get_user_info().await, Err(Error::CookieError))
8275
}
8376

8477
async fn resp_to_json<T: DeserializeOwned>(&self, resp: Response) -> Result<T, Error> {
85-
let maybe_json: Result<T,_> = resp.json().await;
78+
let maybe_json: Result<T,_> = resp.json().await;
8679
if maybe_json.is_err() && self.is_session_bad().await {
8780
Err(Error::CookieError)
88-
} else { Ok(maybe_json?) }
81+
} else {
82+
Ok(maybe_json?)
83+
}
8984
}
9085

9186
/// Download leetcode problems to db
@@ -123,16 +118,17 @@ impl Cache {
123118
Ok(p)
124119
}
125120

126-
/// Get daily problem
121+
/// Get daily problem
127122
pub async fn get_daily_problem_id(&self) -> Result<i32, Error> {
128123
parser::daily(
129124
self.clone()
130125
.0
131126
.get_question_daily()
132127
.await?
133128
.json() // does not require LEETCODE_SESSION
134-
.await?
135-
).ok_or(Error::NoneError)
129+
.await?,
130+
)
131+
.ok_or(Error::NoneError)
136132
}
137133

138134
/// Get problems from cache
@@ -179,13 +175,14 @@ impl Cache {
179175
debug!("{:#?}", &json);
180176
match parser::desc(&mut rdesc, json) {
181177
None => return Err(Error::NoneError),
182-
Some(false) => return
183-
if self.is_session_bad().await {
178+
Some(false) => {
179+
returnif self.is_session_bad().await {
184180
Err(Error::CookieError)
185181
} else {
186182
Err(Error::PremiumError)
187-
},
188-
Some(true) => ()
183+
}
184+
}
185+
Some(true) => (),
189186
}
190187

191188
// update the question
@@ -215,7 +212,8 @@ impl Cache {
215212
.await?
216213
.json()
217214
.await?,
218-
).ok_or(Error::NoneError)?;
215+
)
216+
.ok_or(Error::NoneError)?;
219217
let t = Tag {
220218
r#tag: rslug.to_string(),
221219
r#refs: serde_json::to_string(&ids)?,
@@ -258,22 +256,20 @@ impl Cache {
258256
let mut code: String = "".to_string();
259257

260258
let maybe_file_testcases: Option<String> = test_cases_path(&p)
261-
.map(|filename| {
262-
let mut tests = "".to_string();
263-
File::open(filename)
264-
.and_then(|mut file_descriptor| file_descriptor.read_to_string(&mut tests))
265-
.map(|_| Some(tests))
266-
.unwrap_or(None)
267-
})
268-
.unwrap_or(None);
259+
.map(|filename| {
260+
let mut tests = "".to_string();
261+
File::open(filename)
262+
.and_then(|mut file_descriptor| file_descriptor.read_to_string(&mut tests))
263+
.map(|_| Some(tests))
264+
.unwrap_or(None)
265+
})
266+
.unwrap_or(None);
269267

270268
// Takes test cases using following priority
271269
// 1. cli parameter
272270
// 2. test cases from the file
273271
// 3. sample test case from the task
274-
let testcase = testcase
275-
.or(maybe_file_testcases)
276-
.unwrap_or(d.case);
272+
let testcase = testcase.or(maybe_file_testcases).unwrap_or(d.case);
277273

278274
File::open(code_path(&p, None)?)?.read_to_string(&mut code)?;
279275

@@ -286,18 +282,31 @@ impl Cache {
286282
json.insert("data_input", testcase);
287283

288284
let url = match run {
289-
Run::Test => conf.sys.urls.get("test").ok_or(Error::NoneError)?.replace("$slug", &p.slug),
285+
Run::Test => conf
286+
.sys
287+
.urls
288+
.get("test")
289+
.ok_or(Error::NoneError)?
290+
.replace("$slug", &p.slug),
290291
Run::Submit => {
291292
json.insert("judge_type", "large".to_string());
292-
conf.sys.urls.get("submit").ok_or(Error::NoneError)?.replace("$slug", &p.slug)
293+
conf.sys
294+
.urls
295+
.get("submit")
296+
.ok_or(Error::NoneError)?
297+
.replace("$slug", &p.slug)
293298
}
294299
};
295300

296301
Ok((
297302
json,
298303
[
299304
url,
300-
conf.sys.urls.get("problems").ok_or(Error::NoneError)?.replace("$slug", &p.slug),
305+
conf.sys
306+
.urls
307+
.get("problems")
308+
.ok_or(Error::NoneError)?
309+
.replace("$slug", &p.slug),
301310
],
302311
))
303312
}
@@ -309,13 +318,9 @@ impl Cache {
309318
trace!("Run veriy recursion...");
310319
std::thread::sleep(Duration::from_micros(3000));
311320

312-
let json: VerifyResult = self.resp_to_json(
313-
self
314-
.clone()
315-
.0
316-
.verify_result(rid.clone())
317-
.await?
318-
).await?;
321+
let json: VerifyResult = self
322+
.resp_to_json(self.clone().0.verify_result(rid.clone()).await?)
323+
.await?;
319324

320325
Ok(json)
321326
}
@@ -343,8 +348,10 @@ impl Cache {
343348
// Check if leetcode accepted the Run request
344349
if match run {
345350
Run::Test => run_res.interpret_id.is_empty(),
346-
Run::Submit => run_res.submission_id == 0
347-
} { return Err(Error::CookieError) }
351+
Run::Submit => run_res.submission_id == 0,
352+
} {
353+
return Err(Error::CookieError);
354+
}
348355

349356
let mut res: VerifyResult = VerifyResult::default();
350357
while res.state != "SUCCESS" {

‎src/cache/models.rs

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,15 @@ impl std::fmt::Display for Problem {
5757
1 => {
5858
id.push_str(&SPACE.repeat(2));
5959
id.push_str(&self.fid.to_string());
60-
id.push_str(&SPACE.to_string());
60+
id.push_str(SPACE);
6161
}
6262
2 => {
63-
id.push_str(&SPACE.to_string());
63+
id.push_str(SPACE);
6464
id.push_str(&self.fid.to_string());
65-
id.push_str(&SPACE.to_string());
65+
id.push_str(SPACE);
6666
}
6767
3 => {
68-
id.push_str(&SPACE.to_string());
68+
id.push_str(SPACE);
6969
id.push_str(&self.fid.to_string());
7070
}
7171
4 => {
@@ -268,7 +268,7 @@ impl std::fmt::Display for VerifyResult {
268268
&"Runtime: ".before_spaces(7).dimmed(),
269269
&self.status.status_runtime.dimmed(),
270270
&"\nYour input:".after_spaces(4),
271-
&self.data_input.replace("\n", "↩ "),
271+
&self.data_input.replace('\n', "↩ "),
272272
&"\nOutput:".after_spaces(8),
273273
ca,
274274
&"\nExpected:".after_spaces(6),
@@ -342,7 +342,7 @@ impl std::fmt::Display for VerifyResult {
342342
" Runtime: ".dimmed(),
343343
&self.status.status_runtime.dimmed(),
344344
&"\nYour input:".after_spaces(4),
345-
&self.data_input.replace("\n", "↩ "),
345+
&self.data_input.replace('\n', "↩ "),
346346
&"\nOutput:".after_spaces(8),
347347
ca,
348348
&"\nExpected:".after_spaces(6),
@@ -373,7 +373,7 @@ impl std::fmt::Display for VerifyResult {
373373
.bold()
374374
.yellow(),
375375
&"Last case:".after_spaces(5).dimmed(),
376-
&self.submit.last_testcase.replace("\n", "↩ ").dimmed(),
376+
&self.submit.last_testcase.replace('\n', "↩ ").dimmed(),
377377
&"\nOutput:".after_spaces(8),
378378
self.code_output[0],
379379
&"\nExpected:".after_spaces(6),
@@ -385,15 +385,20 @@ impl std::fmt::Display for VerifyResult {
385385
"\n{}\n\n{}{}\n",
386386
&self.status.status_msg.yellow().bold(),
387387
&"Last case:".after_spaces(5).dimmed(),
388-
&self.data_input.replace("\n", "↩ "),
388+
&self.data_input.replace('\n', "↩ "),
389389
)?,
390390
// Output Timeout Exceeded
391391
//
392392
// TODO: 13 and 14 might have some different,
393393
// if anybody reach this, welcome to fix this!
394394
13 | 14 => write!(f, "\n{}\n", &self.status.status_msg.yellow().bold(),)?,
395395
// Runtime error
396-
15 => write!(f, "\n{}\n{}\n'", &self.status.status_msg.red().bold(), &self.status.runtime_error)?,
396+
15 => write!(
397+
f,
398+
"\n{}\n{}\n'",
399+
&self.status.status_msg.red().bold(),
400+
&self.status.runtime_error
401+
)?,
397402
// Compile Error
398403
20 => write!(
399404
f,
@@ -436,7 +441,7 @@ impl std::fmt::Display for VerifyResult {
436441
f,
437442
"{}{}",
438443
&"Stdout:".after_spaces(8).purple(),
439-
&self.std_output.replace("\n", &"\n".after_spaces(15))
444+
&self.std_output.replace('\n', &"\n".after_spaces(15))
440445
)
441446
} else {
442447
write!(f, "")
@@ -495,7 +500,7 @@ mod verify {
495500
#[serde(default)]
496501
pub status_runtime: String,
497502
#[serde(default)]
498-
pub runtime_error: String
503+
pub runtime_error: String,
499504
}
500505

501506
#[derive(Debug, Default, Deserialize)]

‎src/cfg.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
//!
66
//! + Edit leetcode.toml at `~/.leetcode/leetcode.toml` directly
77
//! + Use `leetcode config` to update it
8+
use crate::Error;
89
use serde::{Deserialize, Serialize};
910
use std::{collections::HashMap, fs, path::PathBuf};
10-
use crate::Error;
1111

1212
const DEFAULT_CONFIG: &str = r#"
1313
# usually you don't wanna change those
@@ -150,8 +150,11 @@ pub struct Storage {
150150
impl Storage {
151151
/// convert root path
152152
pub fn root(&self) -> Result<String, Error> {
153-
let home = dirs::home_dir().ok_or(Error::NoneError)?.to_string_lossy().to_string();
154-
let path = self.root.replace("~", &home);
153+
let home = dirs::home_dir()
154+
.ok_or(Error::NoneError)?
155+
.to_string_lossy()
156+
.to_string();
157+
let path = self.root.replace('~', &home);
155158
Ok(path)
156159
}
157160

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /