核心功能: - ✅ Categories/Series双视图管理(category_view.rs + import_markdown.rs) - ✅ FUSE Multi-Volume支持(tree_type参数) - ✅ SSH/SFTP/SCP/rsync协议完整实现(4042行) - ✅ NFS/SMB Module Phase 1-3完成 - ✅ Archive Module Phase 1-4完成(2916行) - ✅ Download Center API完整实现 - ✅ S3兼容API实现(560行) Git配置修正: - ✅ 删除错误origin(gitea.momentry.ddns.net) - ✅ 删除m5max128(指向机器名) - ✅ 设置origin = m5max128gitea.momentry.ddns.net/admin/markbase - ✅ 设置m4minigitea = m4minigitea.momentry.ddns.net/warren/markbase 数据清理: - ✅ 删除38个临时SQLite(保留accusys.sqlite、demo.sqlite) - ✅ 删除.bak、test_*.bin、调试脚本等临时文件 - ✅ 删除临时目录(build/、download files/、raid_test/等) - ✅ 更新.gitignore排除临时文件 架构优化: - 52个文件修改,2434行新增,4739行删除 - Workspace成员整合(16个crate) - 数据库状态:accusys.sqlite保留(主demo测试) 远程同步: - ✅ 准备推送到m5max128gitea(远程Gitea) - ✅ 准备推送到m4minigitea(本地Gitea)
19 lines
34 KiB
Plaintext
19 lines
34 KiB
Plaintext
{"$message_type":"diagnostic","message":"unresolved import `russh_sftp::server::SftpServer`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/server.rs","byte_start":75,"byte_end":105,"line_start":4,"line_end":4,"column_start":5,"column_end":35,"is_primary":true,"text":[{"text":"use russh_sftp::server::SftpServer;","highlight_start":5,"highlight_end":35}],"label":"no `SftpServer` in `server`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `russh_sftp::server::SftpServer`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/server.rs:4:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m4\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use russh_sftp::server::SftpServer;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `SftpServer` in `server`\u001b[0m\n\n"}
|
|
{"$message_type":"diagnostic","message":"unresolved import `russh::SigId`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/shell_handler.rs","byte_start":93,"byte_end":98,"line_start":3,"line_end":3,"column_start":24,"column_end":29,"is_primary":true,"text":[{"text":"use russh::{ChannelId, SigId};","highlight_start":24,"highlight_end":29}],"label":"no `SigId` in the root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `russh::SigId`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/shell_handler.rs:3:24\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m3\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use russh::{ChannelId, SigId};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mno `SigId` in the root\u001b[0m\n\n"}
|
|
{"$message_type":"diagnostic","message":"unresolved import `russh_sftp::server::SftpHandler`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/sftp_handler.rs","byte_start":24,"byte_end":55,"line_start":2,"line_end":2,"column_start":5,"column_end":36,"is_primary":true,"text":[{"text":"use russh_sftp::server::SftpHandler;","highlight_start":5,"highlight_end":36}],"label":"no `SftpHandler` in `server`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `russh_sftp::server::SftpHandler`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/sftp_handler.rs:2:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m2\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use russh_sftp::server::SftpHandler;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `SftpHandler` in `server`\u001b[0m\n\n"}
|
|
{"$message_type":"diagnostic","message":"cannot find `AuthResult` in `server`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"src/shell_handler.rs","byte_start":4527,"byte_end":4537,"line_start":137,"line_end":137,"column_start":28,"column_end":38,"is_primary":true,"text":[{"text":" russh::server::AuthResult::Accept","highlight_start":28,"highlight_end":38}],"label":"could not find `AuthResult` in `server`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `AuthResult` in `server`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/shell_handler.rs:137:28\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m137\u001b[0m \u001b[1m\u001b[94m|\u001b[0m russh::server::AuthResult::Accept\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `AuthResult` in `server`\u001b[0m\n\n"}
|
|
{"$message_type":"diagnostic","message":"cannot find `AuthResult` in `server`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"src/shell_handler.rs","byte_start":4639,"byte_end":4649,"line_start":140,"line_end":140,"column_start":28,"column_end":38,"is_primary":true,"text":[{"text":" russh::server::AuthResult::Reject","highlight_start":28,"highlight_end":38}],"label":"could not find `AuthResult` in `server`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `AuthResult` in `server`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/shell_handler.rs:140:28\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m140\u001b[0m \u001b[1m\u001b[94m|\u001b[0m russh::server::AuthResult::Reject\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `AuthResult` in `server`\u001b[0m\n\n"}
|
|
{"$message_type":"diagnostic","message":"expected trait, found struct `Session`","code":{"code":"E0404","explanation":"A type that is not a trait was used in a trait position, such as a bound\nor `impl`.\n\nErroneous code example:\n\n```compile_fail,E0404\nstruct Foo;\nstruct Bar;\n\nimpl Foo for Bar {} // error: `Foo` is not a trait\nfn baz<T: Foo>(t: T) {} // error: `Foo` is not a trait\n```\n\nAnother erroneous code example:\n\n```compile_fail,E0404\ntype Foo = Iterator<Item=String>;\n\nfn bar<T: Foo>(t: T) {} // error: `Foo` is a type alias\n```\n\nPlease verify that the trait's name was not misspelled or that the right\nidentifier was used. Example:\n\n```\ntrait Foo {\n // some functions\n}\nstruct Bar;\n\nimpl Foo for Bar { // ok!\n // functions implementation\n}\n\nfn baz<T: Foo>(t: T) {} // ok!\n```\n\nAlternatively, you could introduce a new trait with your desired restrictions\nas a super trait:\n\n```\n# trait Foo {}\n# struct Bar;\n# impl Foo for Bar {}\ntrait Qux: Foo {} // Anything that implements Qux also needs to implement Foo\nfn baz<T: Qux>(t: T) {} // also ok!\n```\n\nFinally, if you are on nightly and want to use a trait alias\ninstead of a type alias, you should use `#![feature(trait_alias)]`:\n\n```\n#![feature(trait_alias)]\ntrait Foo = Iterator<Item=String>;\n\nfn bar<T: Foo>(t: T) {} // ok!\n```\n"},"level":"error","spans":[{"file_name":"src/shell_handler.rs","byte_start":3218,"byte_end":3225,"line_start":100,"line_end":100,"column_start":6,"column_end":13,"is_primary":true,"text":[{"text":"impl Session for ShellSession {","highlight_start":6,"highlight_end":13}],"label":"not a trait","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0404]\u001b[0m\u001b[1m: expected trait, found struct `Session`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/shell_handler.rs:100:6\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m100\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl Session for ShellSession {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91mnot a trait\u001b[0m\n\n"}
|
|
{"$message_type":"diagnostic","message":"expected trait, found enum `Auth`","code":{"code":"E0404","explanation":"A type that is not a trait was used in a trait position, such as a bound\nor `impl`.\n\nErroneous code example:\n\n```compile_fail,E0404\nstruct Foo;\nstruct Bar;\n\nimpl Foo for Bar {} // error: `Foo` is not a trait\nfn baz<T: Foo>(t: T) {} // error: `Foo` is not a trait\n```\n\nAnother erroneous code example:\n\n```compile_fail,E0404\ntype Foo = Iterator<Item=String>;\n\nfn bar<T: Foo>(t: T) {} // error: `Foo` is a type alias\n```\n\nPlease verify that the trait's name was not misspelled or that the right\nidentifier was used. Example:\n\n```\ntrait Foo {\n // some functions\n}\nstruct Bar;\n\nimpl Foo for Bar { // ok!\n // functions implementation\n}\n\nfn baz<T: Foo>(t: T) {} // ok!\n```\n\nAlternatively, you could introduce a new trait with your desired restrictions\nas a super trait:\n\n```\n# trait Foo {}\n# struct Bar;\n# impl Foo for Bar {}\ntrait Qux: Foo {} // Anything that implements Qux also needs to implement Foo\nfn baz<T: Qux>(t: T) {} // also ok!\n```\n\nFinally, if you are on nightly and want to use a trait alias\ninstead of a type alias, you should use `#![feature(trait_alias)]`:\n\n```\n#![feature(trait_alias)]\ntrait Foo = Iterator<Item=String>;\n\nfn bar<T: Foo>(t: T) {} // ok!\n```\n"},"level":"error","spans":[{"file_name":"src/shell_handler.rs","byte_start":4170,"byte_end":4174,"line_start":130,"line_end":130,"column_start":6,"column_end":10,"is_primary":true,"text":[{"text":"impl Auth for ShellSession {","highlight_start":6,"highlight_end":10}],"label":"not a trait","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0404]\u001b[0m\u001b[1m: expected trait, found enum `Auth`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/shell_handler.rs:130:6\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m130\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl Auth for ShellSession {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mnot a trait\u001b[0m\n\n"}
|
|
{"$message_type":"diagnostic","message":"cannot find type `AuthResult` in module `russh::server`","code":{"code":"E0425","explanation":"An unresolved name was used.\n\nErroneous code examples:\n\n```compile_fail,E0425\nsomething_that_doesnt_exist::foo;\n// error: unresolved name `something_that_doesnt_exist::foo`\n\n// or:\n\ntrait Foo {\n fn bar() {\n Self; // error: unresolved name `Self`\n }\n}\n\n// or:\n\nlet x = unknown_variable; // error: unresolved name `unknown_variable`\n```\n\nPlease verify that the name wasn't misspelled and ensure that the\nidentifier being referred to is valid for the given situation. Example:\n\n```\nenum something_that_does_exist {\n Foo,\n}\n```\n\nOr:\n\n```\nmod something_that_does_exist {\n pub static foo : i32 = 0i32;\n}\n\nsomething_that_does_exist::foo; // ok!\n```\n\nOr:\n\n```\nlet unknown_variable = 12u32;\nlet x = unknown_variable; // ok!\n```\n\nIf the item is not defined in the current module, it must be imported using a\n`use` statement, like so:\n\n```\n# mod foo { pub fn bar() {} }\n# fn main() {\nuse foo::bar;\nbar();\n# }\n```\n\nIf the item you are importing is not defined in some super-module of the\ncurrent module, then it must also be declared as public (e.g., `pub fn`).\n"},"level":"error","spans":[{"file_name":"src/shell_handler.rs","byte_start":4298,"byte_end":4308,"line_start":132,"line_end":132,"column_start":85,"column_end":95,"is_primary":true,"text":[{"text":" async fn auth_password(&mut self, user: &str, password: &str) -> russh::server::AuthResult {","highlight_start":85,"highlight_end":95}],"label":"not found in `russh::server`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0425]\u001b[0m\u001b[1m: cannot find type `AuthResult` in module `russh::server`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/shell_handler.rs:132:85\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m132\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn auth_password(&mut self, user: &str, password: &str) -> russh::server::AuthResult {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mnot found in `russh::server`\u001b[0m\n\n"}
|
|
{"$message_type":"diagnostic","message":"cannot find function `run_server` in module `server`","code":{"code":"E0425","explanation":"An unresolved name was used.\n\nErroneous code examples:\n\n```compile_fail,E0425\nsomething_that_doesnt_exist::foo;\n// error: unresolved name `something_that_doesnt_exist::foo`\n\n// or:\n\ntrait Foo {\n fn bar() {\n Self; // error: unresolved name `Self`\n }\n}\n\n// or:\n\nlet x = unknown_variable; // error: unresolved name `unknown_variable`\n```\n\nPlease verify that the name wasn't misspelled and ensure that the\nidentifier being referred to is valid for the given situation. Example:\n\n```\nenum something_that_does_exist {\n Foo,\n}\n```\n\nOr:\n\n```\nmod something_that_does_exist {\n pub static foo : i32 = 0i32;\n}\n\nsomething_that_does_exist::foo; // ok!\n```\n\nOr:\n\n```\nlet unknown_variable = 12u32;\nlet x = unknown_variable; // ok!\n```\n\nIf the item is not defined in the current module, it must be imported using a\n`use` statement, like so:\n\n```\n# mod foo { pub fn bar() {} }\n# fn main() {\nuse foo::bar;\nbar();\n# }\n```\n\nIf the item you are importing is not defined in some super-module of the\ncurrent module, then it must also be declared as public (e.g., `pub fn`).\n"},"level":"error","spans":[{"file_name":"src/main.rs","byte_start":411,"byte_end":421,"line_start":19,"line_end":19,"column_start":13,"column_end":23,"is_primary":true,"text":[{"text":" server::run_server().await?;","highlight_start":13,"highlight_end":23}],"label":"not found in `server`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0425]\u001b[0m\u001b[1m: cannot find function `run_server` in module `server`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/main.rs:19:13\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m19\u001b[0m \u001b[1m\u001b[94m|\u001b[0m server::run_server().await?;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mnot found in `server`\u001b[0m\n\n"}
|
|
{"$message_type":"diagnostic","message":"enum `Sig` is private","code":{"code":"E0603","explanation":"A private item was used outside its scope.\n\nErroneous code example:\n\n```compile_fail,E0603\nmod foo {\n const PRIVATE: u32 = 0x_a_bad_1dea_u32; // This const is private, so we\n // can't use it outside of the\n // `foo` module.\n}\n\nprintln!(\"const value: {}\", foo::PRIVATE); // error: constant `PRIVATE`\n // is private\n```\n\nIn order to fix this error, you need to make the item public by using the `pub`\nkeyword. Example:\n\n```\nmod foo {\n pub const PRIVATE: u32 = 0x_a_bad_1dea_u32; // We set it public by using the\n // `pub` keyword.\n}\n\nprintln!(\"const value: {}\", foo::PRIVATE); // ok!\n```\n"},"level":"error","spans":[{"file_name":"src/shell_handler.rs","byte_start":64,"byte_end":67,"line_start":2,"line_end":2,"column_start":36,"column_end":39,"is_primary":true,"text":[{"text":"use russh::server::{Auth, Session, Sig};","highlight_start":36,"highlight_end":39}],"label":"private enum","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"the enum `Sig` is defined here","code":null,"level":"note","spans":[{"file_name":"/Users/accusys/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/russh-0.61.2/src/server/mod.rs","byte_start":2459,"byte_end":2464,"line_start":57,"line_end":57,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"use crate::*;","highlight_start":5,"highlight_end":10}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null},{"message":"import `Sig` directly","code":null,"level":"help","spans":[{"file_name":"src/shell_handler.rs","byte_start":64,"byte_end":67,"line_start":2,"line_end":2,"column_start":36,"column_end":39,"is_primary":true,"text":[{"text":"use russh::server::{Auth, Session, Sig};","highlight_start":36,"highlight_end":39}],"label":null,"suggested_replacement":"russh::Sig","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0603]\u001b[0m\u001b[1m: enum `Sig` is private\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/shell_handler.rs:2:36\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 2\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use russh::server::{Auth, Session, Sig};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^\u001b[0m \u001b[1m\u001b[91mprivate enum\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: the enum `Sig` is defined here\n \u001b[1m\u001b[94m--> \u001b[0m/Users/accusys/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/russh-0.61.2/src/server/mod.rs:57:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m57\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::*;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: import `Sig` directly\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 2\u001b[0m \u001b[1m\u001b[94m| \u001b[0muse russh::server::{Auth, Session, \u001b[92mrussh::\u001b[0mSig};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[92m+++++++\u001b[0m\n\n"}
|
|
{"$message_type":"diagnostic","message":"unused import: `russh::*`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/server.rs","byte_start":61,"byte_end":69,"line_start":3,"line_end":3,"column_start":5,"column_end":13,"is_primary":true,"text":[{"text":"use russh::*;","highlight_start":5,"highlight_end":13}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/server.rs","byte_start":57,"byte_end":71,"line_start":3,"line_end":4,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use russh::*;","highlight_start":1,"highlight_end":14},{"text":"use russh_sftp::server::SftpServer;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `russh::*`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/server.rs:3:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m3\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use russh::*;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\n"}
|
|
{"$message_type":"diagnostic","message":"unused import: `error`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/shell_handler.rs","byte_start":172,"byte_end":177,"line_start":6,"line_end":6,"column_start":23,"column_end":28,"is_primary":true,"text":[{"text":"use log::{info, warn, error};","highlight_start":23,"highlight_end":28}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the unused import","code":null,"level":"help","spans":[{"file_name":"src/shell_handler.rs","byte_start":170,"byte_end":177,"line_start":6,"line_end":6,"column_start":21,"column_end":28,"is_primary":true,"text":[{"text":"use log::{info, warn, error};","highlight_start":21,"highlight_end":28}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `error`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/shell_handler.rs:6:23\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use log::{info, warn, error};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m\n\n"}
|
|
{"$message_type":"diagnostic","message":"unused import: `anyhow::Result`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/sftp_handler.rs","byte_start":4,"byte_end":18,"line_start":1,"line_end":1,"column_start":5,"column_end":19,"is_primary":true,"text":[{"text":"use anyhow::Result;","highlight_start":5,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/sftp_handler.rs","byte_start":0,"byte_end":20,"line_start":1,"line_end":2,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use anyhow::Result;","highlight_start":1,"highlight_end":20},{"text":"use russh_sftp::server::SftpHandler;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `anyhow::Result`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/sftp_handler.rs:1:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use anyhow::Result;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^\u001b[0m\n\n"}
|
|
{"$message_type":"diagnostic","message":"unused import: `log::info`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/sftp_handler.rs","byte_start":61,"byte_end":70,"line_start":3,"line_end":3,"column_start":5,"column_end":14,"is_primary":true,"text":[{"text":"use log::info;","highlight_start":5,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/sftp_handler.rs","byte_start":57,"byte_end":72,"line_start":3,"line_end":4,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use log::info;","highlight_start":1,"highlight_end":15},{"text":"","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `log::info`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/sftp_handler.rs:3:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m3\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use log::info;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n\n"}
|
|
{"$message_type":"diagnostic","message":"the trait bound `ShellSession: russh::server::Handler` is not satisfied","code":{"code":"E0277","explanation":"You tried to use a type which doesn't implement some trait in a place which\nexpected that trait.\n\nErroneous code example:\n\n```compile_fail,E0277\n// here we declare the Foo trait with a bar method\ntrait Foo {\n fn bar(&self);\n}\n\n// we now declare a function which takes an object implementing the Foo trait\nfn some_func<T: Foo>(foo: T) {\n foo.bar();\n}\n\nfn main() {\n // we now call the method with the i32 type, which doesn't implement\n // the Foo trait\n some_func(5i32); // error: the trait bound `i32 : Foo` is not satisfied\n}\n```\n\nIn order to fix this error, verify that the type you're using does implement\nthe trait. Example:\n\n```\ntrait Foo {\n fn bar(&self);\n}\n\n// we implement the trait on the i32 type\nimpl Foo for i32 {\n fn bar(&self) {}\n}\n\nfn some_func<T: Foo>(foo: T) {\n foo.bar(); // we can now use this method since i32 implements the\n // Foo trait\n}\n\nfn main() {\n some_func(5i32); // ok!\n}\n```\n\nOr in a generic context, an erroneous code example would look like:\n\n```compile_fail,E0277\nfn some_func<T>(foo: T) {\n println!(\"{:?}\", foo); // error: the trait `core::fmt::Debug` is not\n // implemented for the type `T`\n}\n\nfn main() {\n // We now call the method with the i32 type,\n // which *does* implement the Debug trait.\n some_func(5i32);\n}\n```\n\nNote that the error here is in the definition of the generic function. Although\nwe only call it with a parameter that does implement `Debug`, the compiler\nstill rejects the function. It must work with all possible input types. In\norder to make this example compile, we need to restrict the generic type we're\naccepting:\n\n```\nuse std::fmt;\n\n// Restrict the input type to types that implement Debug.\nfn some_func<T: fmt::Debug>(foo: T) {\n println!(\"{:?}\", foo);\n}\n\nfn main() {\n // Calling the method is still fine, as i32 implements Debug.\n some_func(5i32);\n\n // This would fail to compile now:\n // struct WithoutDebug;\n // some_func(WithoutDebug);\n}\n```\n\nRust only looks at the signature of the called function, as such it must\nalready specify all requirements that will be used for every type parameter.\n"},"level":"error","spans":[{"file_name":"src/server.rs","byte_start":2045,"byte_end":2057,"line_start":72,"line_end":72,"column_start":20,"column_end":32,"is_primary":true,"text":[{"text":" type Handler = ShellSession;","highlight_start":20,"highlight_end":32}],"label":"unsatisfied trait bound","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"the trait `russh::server::Handler` is not implemented for `ShellSession`","code":null,"level":"help","spans":[{"file_name":"src/shell_handler.rs","byte_start":211,"byte_end":234,"line_start":10,"line_end":10,"column_start":1,"column_end":24,"is_primary":true,"text":[{"text":"pub struct ShellSession {","highlight_start":1,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null},{"message":"required by a bound in `russh::server::Server::Handler`","code":null,"level":"note","spans":[{"file_name":"/Users/accusys/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/russh-0.61.2/src/server/mod.rs","byte_start":29510,"byte_end":29517,"line_start":865,"line_end":865,"column_start":19,"column_end":26,"is_primary":true,"text":[{"text":" type Handler: Handler + Send + 'static;","highlight_start":19,"highlight_end":26}],"label":"required by this bound in `Server::Handler`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0277]\u001b[0m\u001b[1m: the trait bound `ShellSession: russh::server::Handler` is not satisfied\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/server.rs:72:20\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 72\u001b[0m \u001b[1m\u001b[94m|\u001b[0m type Handler = ShellSession;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91munsatisfied trait bound\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: the trait `russh::server::Handler` is not implemented for `ShellSession`\n \u001b[1m\u001b[94m--> \u001b[0msrc/shell_handler.rs:10:1\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct ShellSession {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[96m^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: required by a bound in `russh::server::Server::Handler`\n \u001b[1m\u001b[94m--> \u001b[0m/Users/accusys/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/russh-0.61.2/src/server/mod.rs:865:19\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m865\u001b[0m \u001b[1m\u001b[94m|\u001b[0m type Handler: Handler + Send + 'static;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^\u001b[0m \u001b[1m\u001b[92mrequired by this bound in `Server::Handler`\u001b[0m\n\n"}
|
|
{"$message_type":"diagnostic","message":"aborting due to 11 previous errors; 4 warnings emitted","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[1m\u001b[91merror\u001b[0m\u001b[1m: aborting due to 11 previous errors; 4 warnings emitted\u001b[0m\n\n"}
|
|
{"$message_type":"diagnostic","message":"Some errors have detailed explanations: E0277, E0404, E0425, E0432, E0433, E0603.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1mSome errors have detailed explanations: E0277, E0404, E0425, E0432, E0433, E0603.\u001b[0m\n"}
|
|
{"$message_type":"diagnostic","message":"For more information about an error, try `rustc --explain E0277`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1mFor more information about an error, try `rustc --explain E0277`.\u001b[0m\n"}
|