{"$message_type":"diagnostic","message":"method `can_read` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\auth.rs","byte_start":724,"byte_end":738,"line_start":32,"line_end":32,"column_start":1,"column_end":15,"is_primary":false,"text":[{"text":"impl JwtClaims {","highlight_start":1,"highlight_end":15}],"label":"method in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\auth.rs","byte_start":1229,"byte_end":1237,"line_start":48,"line_end":48,"column_start":12,"column_end":20,"is_primary":true,"text":[{"text":" pub fn can_read(&self) -> bool {","highlight_start":12,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: method `can_read` is never used\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\auth.rs:48:12\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m32\u001b[0m \u001b[1m\u001b[96m|\u001b[0m impl JwtClaims {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[96m--------------\u001b[0m \u001b[1m\u001b[96mmethod in this implementation\u001b[0m\n\u001b[1m\u001b[96m...\u001b[0m\n\u001b[1m\u001b[96m48\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn can_read(&self) -> bool {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mnote\u001b[0m: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default\n\n"} {"$message_type":"diagnostic","message":"field `email` is never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\auth.rs","byte_start":1567,"byte_end":1584,"line_start":60,"line_end":60,"column_start":12,"column_end":29,"is_primary":false,"text":[{"text":"pub struct AuthenticatedUser {","highlight_start":12,"highlight_end":29}],"label":"field in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\auth.rs","byte_start":1622,"byte_end":1627,"line_start":62,"line_end":62,"column_start":9,"column_end":14,"is_primary":true,"text":[{"text":" pub email: Option,","highlight_start":9,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`AuthenticatedUser` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: field `email` is never read\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\auth.rs:62:9\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m60\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct AuthenticatedUser {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[96m-----------------\u001b[0m \u001b[1m\u001b[96mfield in this struct\u001b[0m\n\u001b[1m\u001b[96m61\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub user_id: String,\n\u001b[1m\u001b[96m62\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub email: Option,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mnote\u001b[0m: `AuthenticatedUser` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis\n\n"} {"$message_type":"diagnostic","message":"struct `EngineCapability` is never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\engine.rs","byte_start":229,"byte_end":245,"line_start":10,"line_end":10,"column_start":12,"column_end":28,"is_primary":true,"text":[{"text":"pub struct EngineCapability {","highlight_start":12,"highlight_end":28}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: struct `EngineCapability` is never constructed\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\engine.rs:10:12\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m10\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct EngineCapability {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"method `is_engine_available` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\engine.rs","byte_start":2417,"byte_end":2436,"line_start":86,"line_end":86,"column_start":1,"column_end":20,"is_primary":false,"text":[{"text":"impl EngineRegistry {","highlight_start":1,"highlight_end":20}],"label":"method in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\engine.rs","byte_start":8981,"byte_end":9000,"line_start":237,"line_end":237,"column_start":18,"column_end":37,"is_primary":true,"text":[{"text":" pub async fn is_engine_available(&self, engine_id: &str) -> bool {","highlight_start":18,"highlight_end":37}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: method `is_engine_available` is never used\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\engine.rs:237:18\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m86\u001b[0m \u001b[1m\u001b[96m|\u001b[0m impl EngineRegistry {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[96m-------------------\u001b[0m \u001b[1m\u001b[96mmethod in this implementation\u001b[0m\n\u001b[1m\u001b[96m...\u001b[0m\n\u001b[1m\u001b[96m237\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub async fn is_engine_available(&self, engine_id: &str) -> bool {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"variants `Unauthorized`, `EngineDisabled`, `UnsupportedFormat`, `JobFailed`, and `FileNotFound` are never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\error.rs","byte_start":222,"byte_end":230,"line_start":13,"line_end":13,"column_start":10,"column_end":18,"is_primary":false,"text":[{"text":"pub enum ApiError {","highlight_start":10,"highlight_end":18}],"label":"variants in this enum","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\error.rs","byte_start":271,"byte_end":283,"line_start":15,"line_end":15,"column_start":5,"column_end":17,"is_primary":true,"text":[{"text":" Unauthorized(String),","highlight_start":5,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\error.rs","byte_start":660,"byte_end":674,"line_start":33,"line_end":33,"column_start":5,"column_end":19,"is_primary":true,"text":[{"text":" EngineDisabled(String),","highlight_start":5,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\error.rs","byte_start":927,"byte_end":944,"line_start":42,"line_end":42,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":" UnsupportedFormat(String),","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\error.rs","byte_start":1140,"byte_end":1149,"line_start":51,"line_end":51,"column_start":5,"column_end":14,"is_primary":true,"text":[{"text":" JobFailed(String),","highlight_start":5,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\error.rs","byte_start":1205,"byte_end":1217,"line_start":54,"line_end":54,"column_start":5,"column_end":17,"is_primary":true,"text":[{"text":" FileNotFound(String),","highlight_start":5,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`ApiError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: variants `Unauthorized`, `EngineDisabled`, `UnsupportedFormat`, `JobFailed`, and `FileNotFound` are never constructed\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\error.rs:15:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m13\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub enum ApiError {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[96m--------\u001b[0m \u001b[1m\u001b[96mvariants in this enum\u001b[0m\n\u001b[1m\u001b[96m14\u001b[0m \u001b[1m\u001b[96m|\u001b[0m #[error(\"未授權:{0}\")]\n\u001b[1m\u001b[96m15\u001b[0m \u001b[1m\u001b[96m|\u001b[0m Unauthorized(String),\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[96m...\u001b[0m\n\u001b[1m\u001b[96m33\u001b[0m \u001b[1m\u001b[96m|\u001b[0m EngineDisabled(String),\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[96m...\u001b[0m\n\u001b[1m\u001b[96m42\u001b[0m \u001b[1m\u001b[96m|\u001b[0m UnsupportedFormat(String),\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[96m...\u001b[0m\n\u001b[1m\u001b[96m51\u001b[0m \u001b[1m\u001b[96m|\u001b[0m JobFailed(String),\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[96m...\u001b[0m\n\u001b[1m\u001b[96m54\u001b[0m \u001b[1m\u001b[96m|\u001b[0m FileNotFound(String),\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mnote\u001b[0m: `ApiError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis\n\n"} {"$message_type":"diagnostic","message":"type alias `ApiResult` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\error.rs","byte_start":3526,"byte_end":3535,"line_start":109,"line_end":109,"column_start":10,"column_end":19,"is_primary":true,"text":[{"text":"pub type ApiResult = Result;","highlight_start":10,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: type alias `ApiResult` is never used\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\error.rs:109:10\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m109\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub type ApiResult = Result;\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"methods `get_user_jobs`, `is_job_owner`, and `cleanup_old_jobs` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\job.rs","byte_start":258,"byte_end":271,"line_start":14,"line_end":14,"column_start":1,"column_end":14,"is_primary":false,"text":[{"text":"impl JobStore {","highlight_start":1,"highlight_end":14}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\job.rs","byte_start":901,"byte_end":914,"line_start":37,"line_end":37,"column_start":18,"column_end":31,"is_primary":true,"text":[{"text":" pub async fn get_user_jobs(&self, user_id: &str) -> Vec {","highlight_start":18,"highlight_end":31}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\job.rs","byte_start":3130,"byte_end":3142,"line_start":101,"line_end":101,"column_start":18,"column_end":30,"is_primary":true,"text":[{"text":" pub async fn is_job_owner(&self, job_id: &str, user_id: &str) -> bool {","highlight_start":18,"highlight_end":30}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\job.rs","byte_start":3388,"byte_end":3404,"line_start":107,"line_end":107,"column_start":18,"column_end":34,"is_primary":true,"text":[{"text":" pub async fn cleanup_old_jobs(&self, hours: i64) -> usize {","highlight_start":18,"highlight_end":34}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: methods `get_user_jobs`, `is_job_owner`, and `cleanup_old_jobs` are never used\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\job.rs:37:18\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m14\u001b[0m \u001b[1m\u001b[96m|\u001b[0m impl JobStore {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[96m-------------\u001b[0m \u001b[1m\u001b[96mmethods in this implementation\u001b[0m\n\u001b[1m\u001b[96m...\u001b[0m\n \u001b[1m\u001b[96m37\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub async fn get_user_jobs(&self, user_id: &str) -> Vec {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[96m...\u001b[0m\n\u001b[1m\u001b[96m101\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub async fn is_job_owner(&self, job_id: &str, user_id: &str) -> bool {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[96m...\u001b[0m\n\u001b[1m\u001b[96m107\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub async fn cleanup_old_jobs(&self, hours: i64) -> usize {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"associated function `error` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\models.rs","byte_start":269,"byte_end":302,"line_start":14,"line_end":14,"column_start":1,"column_end":34,"is_primary":false,"text":[{"text":"impl ApiResponse {","highlight_start":1,"highlight_end":34}],"label":"associated function in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\models.rs","byte_start":477,"byte_end":482,"line_start":23,"line_end":23,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":" pub fn error(code: &str, message: &str) -> Self {","highlight_start":12,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: associated function `error` is never used\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\models.rs:23:12\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m14\u001b[0m \u001b[1m\u001b[96m|\u001b[0m impl ApiResponse {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[96m---------------------------------\u001b[0m \u001b[1m\u001b[96massociated function in this implementation\u001b[0m\n\u001b[1m\u001b[96m...\u001b[0m\n\u001b[1m\u001b[96m23\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn error(code: &str, message: &str) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"8 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: 8 warnings emitted\u001b[0m\n\n"}