{"$message_type":"diagnostic","message":"unresolved import `crate::doc_ng::id::IdMap`","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/doc_ng/document.rs","byte_start":131,"byte_end":136,"line_start":6,"line_end":6,"column_start":37,"column_end":42,"is_primary":true,"text":[{"text":"        BlockKind, CommentKind, Id, IdMap, IdSet, ImageKind, LabelKind, PinKind, RouteKind,","highlight_start":37,"highlight_end":42}],"label":"no `IdMap` in `doc_ng::id`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this type alias instead:\ncrate::store::IdMap","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::doc_ng::id::IdMap`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/document.rs:6:37\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         BlockKind, CommentKind, Id, IdMap, IdSet, ImageKind, LabelKind, PinKind, RouteKind,\n  \u001b[1m\u001b[94m|\u001b[0m                                     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mno `IdMap` in `doc_ng::id`\u001b[0m\n  \u001b[1m\u001b[94m|\u001b[0m\n  \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider importing this type alias instead:\n          crate::store::IdMap\n\n"}
{"$message_type":"diagnostic","message":"unused import: `BTreeMap`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/doc_ng/id.rs","byte_start":29,"byte_end":37,"line_start":2,"line_end":2,"column_start":19,"column_end":27,"is_primary":true,"text":[{"text":"    collections::{BTreeMap, BTreeSet},","highlight_start":19,"highlight_end":27}],"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 unused import","code":null,"level":"help","spans":[{"file_name":"src/doc_ng/id.rs","byte_start":29,"byte_end":39,"line_start":2,"line_end":2,"column_start":19,"column_end":29,"is_primary":true,"text":[{"text":"    collections::{BTreeMap, BTreeSet},","highlight_start":19,"highlight_end":29}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"src/doc_ng/id.rs","byte_start":28,"byte_end":29,"line_start":2,"line_end":2,"column_start":18,"column_end":19,"is_primary":true,"text":[{"text":"    collections::{BTreeMap, BTreeSet},","highlight_start":18,"highlight_end":19}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"src/doc_ng/id.rs","byte_start":47,"byte_end":48,"line_start":2,"line_end":2,"column_start":37,"column_end":38,"is_primary":true,"text":[{"text":"    collections::{BTreeMap, BTreeSet},","highlight_start":37,"highlight_end":38}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `BTreeMap`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/id.rs:2:19\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m2\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     collections::{BTreeMap, BTreeSet},\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":"the trait `std::marker::Copy` cannot be implemented for this type","code":{"code":"E0204","explanation":"The `Copy` trait was implemented on a type which contains a field that doesn't\nimplement the `Copy` trait.\n\nErroneous code example:\n\n```compile_fail,E0204\nstruct Foo {\n    foo: Vec<u32>,\n}\n\nimpl Copy for Foo { } // error!\n```\n\nThe `Copy` trait is implemented by default only on primitive types. If your\ntype only contains primitive types, you'll be able to implement `Copy` on it.\nOtherwise, it won't be possible.\n\nHere's another example that will fail:\n\n```compile_fail,E0204\n#[derive(Copy)] // error!\nstruct Foo<'a> {\n    ty: &'a mut bool,\n}\n```\n\nThis fails because `&mut T` is not `Copy`, even when `T` is `Copy` (this\ndiffers from the behavior for `&T`, which is always `Copy`).\n"},"level":"error","spans":[{"file_name":"src/doc_ng/model.rs","byte_start":3006,"byte_end":3024,"line_start":57,"line_end":57,"column_start":5,"column_end":23,"is_primary":false,"text":[{"text":"    pub actor: ActorId, // nil-actor default","highlight_start":5,"highlight_end":23}],"label":"this field does not implement `std::marker::Copy`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/doc_ng/model.rs","byte_start":2972,"byte_end":2977,"line_start":55,"line_end":55,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"pub struct Stamp {","highlight_start":12,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/doc_ng/model.rs","byte_start":2913,"byte_end":2917,"line_start":54,"line_end":54,"column_start":17,"column_end":21,"is_primary":false,"text":[{"text":"#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default)]","highlight_start":17,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"#[derive(Copy)]","def_site_span":{"file_name":"/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/marker.rs","byte_start":16642,"byte_end":16656,"line_start":462,"line_end":462,"column_start":1,"column_end":15,"is_primary":false,"text":[{"text":"pub macro Copy($item:item) {","highlight_start":1,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[{"message":"the `std::marker::Copy` impl for `doc_ng::id::Id<ActorKind>` requires that `ActorKind: std::marker::Copy`","code":null,"level":"note","spans":[{"file_name":"src/doc_ng/model.rs","byte_start":3017,"byte_end":3024,"line_start":57,"line_end":57,"column_start":16,"column_end":23,"is_primary":true,"text":[{"text":"    pub actor: ActorId, // nil-actor default","highlight_start":16,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0204]\u001b[0m\u001b[1m: the trait `std::marker::Copy` cannot be implemented for this type\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/model.rs:55:12\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m54\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default)]\n   \u001b[1m\u001b[94m|\u001b[0m                 \u001b[1m\u001b[94m----\u001b[0m \u001b[1m\u001b[94min this derive macro expansion\u001b[0m\n\u001b[1m\u001b[94m55\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct Stamp {\n   \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m\n\u001b[1m\u001b[94m56\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub lamport: u64,\n\u001b[1m\u001b[94m57\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub actor: ActorId, // nil-actor default\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[94m------------------\u001b[0m \u001b[1m\u001b[94mthis field does not implement `std::marker::Copy`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: the `std::marker::Copy` impl for `doc_ng::id::Id<ActorKind>` requires that `ActorKind: std::marker::Copy`\n  \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/model.rs:57:16\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m57\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub actor: ActorId, // nil-actor default\n   \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[92m^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.\n\nErroneous code examples:\n\n```compile_fail,E0308\nfn plus_one(x: i32) -> i32 {\n    x + 1\n}\n\nplus_one(\"Not a number\");\n//       ^^^^^^^^^^^^^^ expected `i32`, found `&str`\n\nif \"Not a bool\" {\n// ^^^^^^^^^^^^ expected `bool`, found `&str`\n}\n\nlet x: f32 = \"Not a float\";\n//     ---   ^^^^^^^^^^^^^ expected `f32`, found `&str`\n//     |\n//     expected due to this\n```\n\nThis error occurs when an expression was used in a place where the compiler\nexpected an expression of a different type. It can occur in several cases, the\nmost common being when calling a function and passing an argument which has a\ndifferent type than the matching type in the function declaration.\n"},"level":"error","spans":[{"file_name":"src/doc_ng/command.rs","byte_start":10242,"byte_end":10252,"line_start":304,"line_end":304,"column_start":20,"column_end":30,"is_primary":true,"text":[{"text":"            actor: self.actor,","highlight_start":20,"highlight_end":30}],"label":"expected `Id<ActorKind>`, found `ActorKind`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"expected struct `doc_ng::id::Id<ActorKind>`\n   found struct `ActorKind`","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0308]\u001b[0m\u001b[1m: mismatched types\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/command.rs:304:20\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m304\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             actor: self.actor,\n    \u001b[1m\u001b[94m|\u001b[0m                    \u001b[1m\u001b[91m^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mexpected `Id<ActorKind>`, found `ActorKind`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: expected struct `\u001b[1m\u001b[35mdoc_ng::id::Id\u001b[0m\u001b[1m\u001b[35m<\u001b[0mActorKind\u001b[1m\u001b[35m>\u001b[0m`\n               found struct `ActorKind`\n\n"}
{"$message_type":"diagnostic","message":"the trait bound `ActorKind: std::clone::Clone` 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/doc_ng/model.rs","byte_start":3006,"byte_end":3024,"line_start":57,"line_end":57,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"    pub actor: ActorId, // nil-actor default","highlight_start":5,"highlight_end":23}],"label":"the trait `std::clone::Clone` is not implemented for `ActorKind`","suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/doc_ng/model.rs","byte_start":2906,"byte_end":2911,"line_start":54,"line_end":54,"column_start":10,"column_end":15,"is_primary":false,"text":[{"text":"#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default)]","highlight_start":10,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"#[derive(Clone)]","def_site_span":{"file_name":"/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/clone.rs","byte_start":11028,"byte_end":11043,"line_start":289,"line_end":289,"column_start":1,"column_end":16,"is_primary":false,"text":[{"text":"pub macro Clone($item:item) {","highlight_start":1,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[{"message":"required for `doc_ng::id::Id<ActorKind>` to implement `std::clone::Clone`","code":null,"level":"note","spans":[{"file_name":"src/doc_ng/id.rs","byte_start":178,"byte_end":179,"line_start":9,"line_end":9,"column_start":15,"column_end":16,"is_primary":false,"text":[{"text":"pub struct Id<K: IdKind>(Uuid, PhantomData<K>);","highlight_start":15,"highlight_end":16}],"label":"type parameter would need to implement `std::clone::Clone`","suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/doc_ng/id.rs","byte_start":112,"byte_end":117,"line_start":8,"line_end":8,"column_start":17,"column_end":22,"is_primary":false,"text":[{"text":"#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]","highlight_start":17,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"#[derive(Clone)]","def_site_span":{"file_name":"/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/clone.rs","byte_start":11028,"byte_end":11043,"line_start":289,"line_end":289,"column_start":1,"column_end":16,"is_primary":false,"text":[{"text":"pub macro Clone($item:item) {","highlight_start":1,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},{"file_name":"src/doc_ng/id.rs","byte_start":175,"byte_end":177,"line_start":9,"line_end":9,"column_start":12,"column_end":14,"is_primary":true,"text":[{"text":"pub struct Id<K: IdKind>(Uuid, PhantomData<K>);","highlight_start":12,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/doc_ng/id.rs","byte_start":112,"byte_end":117,"line_start":8,"line_end":8,"column_start":17,"column_end":22,"is_primary":false,"text":[{"text":"#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]","highlight_start":17,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"#[derive(Clone)]","def_site_span":{"file_name":"/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/clone.rs","byte_start":11028,"byte_end":11043,"line_start":289,"line_end":289,"column_start":1,"column_end":16,"is_primary":false,"text":[{"text":"pub macro Clone($item:item) {","highlight_start":1,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[],"rendered":null},{"message":"consider manually implementing `std::clone::Clone` to avoid undesired bounds","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"required by a bound in `std::clone::AssertParamIsClone`","code":null,"level":"note","spans":[{"file_name":"/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/clone.rs","byte_start":13250,"byte_end":13255,"line_start":357,"line_end":357,"column_start":34,"column_end":39,"is_primary":true,"text":[{"text":"pub struct AssertParamIsClone<T: Clone + PointeeSized> {","highlight_start":34,"highlight_end":39}],"label":"required by this bound in `AssertParamIsClone`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null},{"message":"consider annotating `ActorKind` with `#[derive(Clone)]`","code":null,"level":"help","spans":[{"file_name":"src/doc_ng/id.rs","byte_start":983,"byte_end":983,"line_start":61,"line_end":61,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"pub struct ActorKind;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"#[derive(Clone)]\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0277]\u001b[0m\u001b[1m: the trait bound `ActorKind: std::clone::Clone` is not satisfied\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/model.rs:57:5\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 54\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default)]\n    \u001b[1m\u001b[94m|\u001b[0m          \u001b[1m\u001b[94m-----\u001b[0m \u001b[1m\u001b[94min this derive macro expansion\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m 57\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub actor: ActorId, // nil-actor default\n    \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mthe trait `std::clone::Clone` is not implemented for `ActorKind`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: required for `doc_ng::id::Id<ActorKind>` to implement `std::clone::Clone`\n   \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/id.rs:9:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]\n    \u001b[1m\u001b[94m|\u001b[0m                 \u001b[1m\u001b[94m-----\u001b[0m \u001b[1m\u001b[94min this derive macro expansion\u001b[0m\n\u001b[1m\u001b[94m  9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct Id<K: IdKind>(Uuid, PhantomData<K>);\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[92m^^\u001b[0m \u001b[1m\u001b[94m-\u001b[0m \u001b[1m\u001b[94mtype parameter would need to implement `std::clone::Clone`\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider manually implementing `std::clone::Clone` to avoid undesired bounds\n\u001b[1m\u001b[92mnote\u001b[0m: required by a bound in `std::clone::AssertParamIsClone`\n   \u001b[1m\u001b[94m--> \u001b[0m/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/clone.rs:357:34\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m357\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct AssertParamIsClone<T: Clone + PointeeSized> {\n    \u001b[1m\u001b[94m|\u001b[0m                                  \u001b[1m\u001b[92m^^^^^\u001b[0m \u001b[1m\u001b[92mrequired by this bound in `AssertParamIsClone`\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider annotating `ActorKind` with `#[derive(Clone)]`\n   \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/id.rs:61:1\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 61\u001b[0m \u001b[92m+ #[derive(Clone)]\u001b[0m\n\u001b[1m\u001b[94m 62\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct ActorKind;\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"binary operation `==` cannot be applied to type `doc_ng::id::Id<ActorKind>`","code":{"code":"E0369","explanation":"A binary operation was attempted on a type which doesn't support it.\n\nErroneous code example:\n\n```compile_fail,E0369\nlet x = 12f32; // error: binary operation `<<` cannot be applied to\n               //        type `f32`\n\nx << 2;\n```\n\nTo fix this error, please check that this type implements this binary\noperation. Example:\n\n```\nlet x = 12u32; // the `u32` type does implement it:\n               // https://doc.rust-lang.org/stable/std/ops/trait.Shl.html\n\nx << 2; // ok!\n```\n\nIt is also possible to overload most operators for your own type by\nimplementing traits from `std::ops`.\n\nString concatenation appends the string on the right to the string on the\nleft and may require reallocation. This requires ownership of the string\non the left. If something should be added to a string literal, move the\nliteral to the heap by allocating it with `to_owned()` like in\n`\"Your text\".to_owned()`.\n"},"level":"error","spans":[{"file_name":"src/doc_ng/model.rs","byte_start":3006,"byte_end":3024,"line_start":57,"line_end":57,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"    pub actor: ActorId, // nil-actor default","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/doc_ng/model.rs","byte_start":2919,"byte_end":2928,"line_start":54,"line_end":54,"column_start":23,"column_end":32,"is_primary":false,"text":[{"text":"#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default)]","highlight_start":23,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"#[derive(PartialEq)]","def_site_span":{"file_name":"/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs","byte_start":10176,"byte_end":10195,"line_start":273,"line_end":273,"column_start":1,"column_end":20,"is_primary":false,"text":[{"text":"pub macro PartialEq($item:item) {","highlight_start":1,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[{"message":"an implementation of `PartialEq` might be missing for `ActorKind`","code":null,"level":"note","spans":[{"file_name":"src/doc_ng/id.rs","byte_start":983,"byte_end":1003,"line_start":61,"line_end":61,"column_start":1,"column_end":21,"is_primary":true,"text":[{"text":"pub struct ActorKind;","highlight_start":1,"highlight_end":21}],"label":"must implement `PartialEq`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null},{"message":"consider annotating `ActorKind` with `#[derive(PartialEq)]`","code":null,"level":"help","spans":[{"file_name":"src/doc_ng/id.rs","byte_start":983,"byte_end":983,"line_start":61,"line_end":61,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"pub struct ActorKind;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"#[derive(PartialEq)]\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0369]\u001b[0m\u001b[1m: binary operation `==` cannot be applied to type `doc_ng::id::Id<ActorKind>`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/model.rs:57:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m54\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default)]\n   \u001b[1m\u001b[94m|\u001b[0m                       \u001b[1m\u001b[94m---------\u001b[0m \u001b[1m\u001b[94min this derive macro expansion\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m57\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub actor: ActorId, // nil-actor default\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: an implementation of `PartialEq` might be missing for `ActorKind`\n  \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/id.rs:61:1\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m61\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct ActorKind;\n   \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[92mmust implement `PartialEq`\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider annotating `ActorKind` with `#[derive(PartialEq)]`\n  \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/id.rs:61:1\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m61\u001b[0m \u001b[92m+ #[derive(PartialEq)]\u001b[0m\n\u001b[1m\u001b[94m62\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct ActorKind;\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"the trait bound `ActorKind: Eq` 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/doc_ng/model.rs","byte_start":3006,"byte_end":3024,"line_start":57,"line_end":57,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"    pub actor: ActorId, // nil-actor default","highlight_start":5,"highlight_end":23}],"label":"the trait `Eq` is not implemented for `ActorKind`","suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/doc_ng/model.rs","byte_start":2930,"byte_end":2932,"line_start":54,"line_end":54,"column_start":34,"column_end":36,"is_primary":false,"text":[{"text":"#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default)]","highlight_start":34,"highlight_end":36}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"#[derive(Eq)]","def_site_span":{"file_name":"/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs","byte_start":13537,"byte_end":13549,"line_start":364,"line_end":364,"column_start":1,"column_end":13,"is_primary":false,"text":[{"text":"pub macro Eq($item:item) {","highlight_start":1,"highlight_end":13}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[{"message":"the trait `Eq` is implemented for `doc_ng::id::Id<K>`","code":null,"level":"help","spans":[{"file_name":"src/doc_ng/id.rs","byte_start":136,"byte_end":138,"line_start":8,"line_end":8,"column_start":41,"column_end":43,"is_primary":true,"text":[{"text":"#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]","highlight_start":41,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/doc_ng/id.rs","byte_start":136,"byte_end":138,"line_start":8,"line_end":8,"column_start":41,"column_end":43,"is_primary":false,"text":[{"text":"#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]","highlight_start":41,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"#[derive(Eq)]","def_site_span":{"file_name":"/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs","byte_start":13537,"byte_end":13549,"line_start":364,"line_end":364,"column_start":1,"column_end":13,"is_primary":false,"text":[{"text":"pub macro Eq($item:item) {","highlight_start":1,"highlight_end":13}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[],"rendered":null},{"message":"required for `doc_ng::id::Id<ActorKind>` to implement `Eq`","code":null,"level":"note","spans":[{"file_name":"src/doc_ng/id.rs","byte_start":178,"byte_end":179,"line_start":9,"line_end":9,"column_start":15,"column_end":16,"is_primary":false,"text":[{"text":"pub struct Id<K: IdKind>(Uuid, PhantomData<K>);","highlight_start":15,"highlight_end":16}],"label":"type parameter would need to implement `Eq`","suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/doc_ng/id.rs","byte_start":136,"byte_end":138,"line_start":8,"line_end":8,"column_start":41,"column_end":43,"is_primary":false,"text":[{"text":"#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]","highlight_start":41,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"#[derive(Eq)]","def_site_span":{"file_name":"/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs","byte_start":13537,"byte_end":13549,"line_start":364,"line_end":364,"column_start":1,"column_end":13,"is_primary":false,"text":[{"text":"pub macro Eq($item:item) {","highlight_start":1,"highlight_end":13}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},{"file_name":"src/doc_ng/id.rs","byte_start":175,"byte_end":177,"line_start":9,"line_end":9,"column_start":12,"column_end":14,"is_primary":true,"text":[{"text":"pub struct Id<K: IdKind>(Uuid, PhantomData<K>);","highlight_start":12,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/doc_ng/id.rs","byte_start":136,"byte_end":138,"line_start":8,"line_end":8,"column_start":41,"column_end":43,"is_primary":false,"text":[{"text":"#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]","highlight_start":41,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"#[derive(Eq)]","def_site_span":{"file_name":"/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs","byte_start":13537,"byte_end":13549,"line_start":364,"line_end":364,"column_start":1,"column_end":13,"is_primary":false,"text":[{"text":"pub macro Eq($item:item) {","highlight_start":1,"highlight_end":13}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[],"rendered":null},{"message":"consider manually implementing `Eq` to avoid undesired bounds","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"required by a bound in `std::cmp::AssertParamIsEq`","code":null,"level":"note","spans":[{"file_name":"/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs","byte_start":13964,"byte_end":13966,"line_start":379,"line_end":379,"column_start":31,"column_end":33,"is_primary":true,"text":[{"text":"pub struct AssertParamIsEq<T: Eq + PointeeSized> {","highlight_start":31,"highlight_end":33}],"label":"required by this bound in `AssertParamIsEq`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null},{"message":"consider annotating `ActorKind` with `#[derive(Eq)]`","code":null,"level":"help","spans":[{"file_name":"src/doc_ng/id.rs","byte_start":983,"byte_end":983,"line_start":61,"line_end":61,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"pub struct ActorKind;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"#[derive(Eq)]\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0277]\u001b[0m\u001b[1m: the trait bound `ActorKind: Eq` is not satisfied\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/model.rs:57:5\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 54\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default)]\n    \u001b[1m\u001b[94m|\u001b[0m                                  \u001b[1m\u001b[94m--\u001b[0m \u001b[1m\u001b[94min this derive macro expansion\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m 57\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub actor: ActorId, // nil-actor default\n    \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mthe trait `Eq` is not implemented for `ActorKind`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: the trait `Eq` \u001b[1m\u001b[35mis\u001b[0m implemented for `\u001b[1m\u001b[35mdoc_ng::id::Id<K>\u001b[0m`\n   \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/id.rs:8:41\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]\n    \u001b[1m\u001b[94m|\u001b[0m                                         \u001b[1m\u001b[96m^^\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: required for `doc_ng::id::Id<ActorKind>` to implement `Eq`\n   \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/id.rs:9:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]\n    \u001b[1m\u001b[94m|\u001b[0m                                         \u001b[1m\u001b[94m--\u001b[0m \u001b[1m\u001b[94min this derive macro expansion\u001b[0m\n\u001b[1m\u001b[94m  9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct Id<K: IdKind>(Uuid, PhantomData<K>);\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[92m^^\u001b[0m \u001b[1m\u001b[94m-\u001b[0m \u001b[1m\u001b[94mtype parameter would need to implement `Eq`\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider manually implementing `Eq` to avoid undesired bounds\n\u001b[1m\u001b[92mnote\u001b[0m: required by a bound in `std::cmp::AssertParamIsEq`\n   \u001b[1m\u001b[94m--> \u001b[0m/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:379:31\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m379\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct AssertParamIsEq<T: Eq + PointeeSized> {\n    \u001b[1m\u001b[94m|\u001b[0m                               \u001b[1m\u001b[92m^^\u001b[0m \u001b[1m\u001b[92mrequired by this bound in `AssertParamIsEq`\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider annotating `ActorKind` with `#[derive(Eq)]`\n   \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/id.rs:61:1\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 61\u001b[0m \u001b[92m+ #[derive(Eq)]\u001b[0m\n\u001b[1m\u001b[94m 62\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct ActorKind;\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"can't compare `ActorKind` with `ActorKind`","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/doc_ng/model.rs","byte_start":3006,"byte_end":3024,"line_start":57,"line_end":57,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"    pub actor: ActorId, // nil-actor default","highlight_start":5,"highlight_end":23}],"label":"no implementation for `ActorKind < ActorKind` and `ActorKind > ActorKind`","suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/doc_ng/model.rs","byte_start":2934,"byte_end":2944,"line_start":54,"line_end":54,"column_start":38,"column_end":48,"is_primary":false,"text":[{"text":"#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default)]","highlight_start":38,"highlight_end":48}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"#[derive(PartialOrd)]","def_site_span":{"file_name":"/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs","byte_start":51332,"byte_end":51352,"line_start":1532,"line_end":1532,"column_start":1,"column_end":21,"is_primary":false,"text":[{"text":"pub macro PartialOrd($item:item) {","highlight_start":1,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[{"message":"the trait `PartialOrd` is not implemented for `ActorKind`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"required for `doc_ng::id::Id<ActorKind>` to implement `PartialOrd`","code":null,"level":"note","spans":[{"file_name":"src/doc_ng/id.rs","byte_start":178,"byte_end":179,"line_start":9,"line_end":9,"column_start":15,"column_end":16,"is_primary":false,"text":[{"text":"pub struct Id<K: IdKind>(Uuid, PhantomData<K>);","highlight_start":15,"highlight_end":16}],"label":"type parameter would need to implement `PartialOrd`","suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/doc_ng/id.rs","byte_start":140,"byte_end":150,"line_start":8,"line_end":8,"column_start":45,"column_end":55,"is_primary":false,"text":[{"text":"#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]","highlight_start":45,"highlight_end":55}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"#[derive(PartialOrd)]","def_site_span":{"file_name":"/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs","byte_start":51332,"byte_end":51352,"line_start":1532,"line_end":1532,"column_start":1,"column_end":21,"is_primary":false,"text":[{"text":"pub macro PartialOrd($item:item) {","highlight_start":1,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},{"file_name":"src/doc_ng/id.rs","byte_start":175,"byte_end":177,"line_start":9,"line_end":9,"column_start":12,"column_end":14,"is_primary":true,"text":[{"text":"pub struct Id<K: IdKind>(Uuid, PhantomData<K>);","highlight_start":12,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/doc_ng/id.rs","byte_start":140,"byte_end":150,"line_start":8,"line_end":8,"column_start":45,"column_end":55,"is_primary":false,"text":[{"text":"#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]","highlight_start":45,"highlight_end":55}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"#[derive(PartialOrd)]","def_site_span":{"file_name":"/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs","byte_start":51332,"byte_end":51352,"line_start":1532,"line_end":1532,"column_start":1,"column_end":21,"is_primary":false,"text":[{"text":"pub macro PartialOrd($item:item) {","highlight_start":1,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[],"rendered":null},{"message":"consider manually implementing `PartialOrd` to avoid undesired bounds","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"consider annotating `ActorKind` with `#[derive(PartialOrd)]`","code":null,"level":"help","spans":[{"file_name":"src/doc_ng/id.rs","byte_start":983,"byte_end":983,"line_start":61,"line_end":61,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"pub struct ActorKind;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"#[derive(PartialOrd)]\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0277]\u001b[0m\u001b[1m: can't compare `ActorKind` with `ActorKind`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/model.rs:57:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m54\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default)]\n   \u001b[1m\u001b[94m|\u001b[0m                                      \u001b[1m\u001b[94m----------\u001b[0m \u001b[1m\u001b[94min this derive macro expansion\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m57\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub actor: ActorId, // nil-actor default\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno implementation for `ActorKind < ActorKind` and `ActorKind > ActorKind`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: the trait `PartialOrd` is not implemented for `ActorKind`\n\u001b[1m\u001b[92mnote\u001b[0m: required for `doc_ng::id::Id<ActorKind>` to implement `PartialOrd`\n  \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/id.rs:9:12\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]\n   \u001b[1m\u001b[94m|\u001b[0m                                             \u001b[1m\u001b[94m----------\u001b[0m \u001b[1m\u001b[94min this derive macro expansion\u001b[0m\n\u001b[1m\u001b[94m 9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct Id<K: IdKind>(Uuid, PhantomData<K>);\n   \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[92m^^\u001b[0m \u001b[1m\u001b[94m-\u001b[0m \u001b[1m\u001b[94mtype parameter would need to implement `PartialOrd`\u001b[0m\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider manually implementing `PartialOrd` to avoid undesired bounds\n\u001b[1m\u001b[96mhelp\u001b[0m: consider annotating `ActorKind` with `#[derive(PartialOrd)]`\n  \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/id.rs:61:1\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m61\u001b[0m \u001b[92m+ #[derive(PartialOrd)]\u001b[0m\n\u001b[1m\u001b[94m62\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct ActorKind;\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"the trait bound `ActorKind: Ord` 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/doc_ng/model.rs","byte_start":3006,"byte_end":3024,"line_start":57,"line_end":57,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"    pub actor: ActorId, // nil-actor default","highlight_start":5,"highlight_end":23}],"label":"the trait `Ord` is not implemented for `ActorKind`","suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/doc_ng/model.rs","byte_start":2946,"byte_end":2949,"line_start":54,"line_end":54,"column_start":50,"column_end":53,"is_primary":false,"text":[{"text":"#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default)]","highlight_start":50,"highlight_end":53}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"#[derive(Ord)]","def_site_span":{"file_name":"/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs","byte_start":36808,"byte_end":36821,"line_start":1118,"line_end":1118,"column_start":1,"column_end":14,"is_primary":false,"text":[{"text":"pub macro Ord($item:item) {","highlight_start":1,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[{"message":"the trait `Ord` is implemented for `doc_ng::id::Id<K>`","code":null,"level":"help","spans":[{"file_name":"src/doc_ng/id.rs","byte_start":152,"byte_end":155,"line_start":8,"line_end":8,"column_start":57,"column_end":60,"is_primary":true,"text":[{"text":"#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]","highlight_start":57,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/doc_ng/id.rs","byte_start":152,"byte_end":155,"line_start":8,"line_end":8,"column_start":57,"column_end":60,"is_primary":false,"text":[{"text":"#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]","highlight_start":57,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"#[derive(Ord)]","def_site_span":{"file_name":"/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs","byte_start":36808,"byte_end":36821,"line_start":1118,"line_end":1118,"column_start":1,"column_end":14,"is_primary":false,"text":[{"text":"pub macro Ord($item:item) {","highlight_start":1,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[],"rendered":null},{"message":"required for `doc_ng::id::Id<ActorKind>` to implement `Ord`","code":null,"level":"note","spans":[{"file_name":"src/doc_ng/id.rs","byte_start":178,"byte_end":179,"line_start":9,"line_end":9,"column_start":15,"column_end":16,"is_primary":false,"text":[{"text":"pub struct Id<K: IdKind>(Uuid, PhantomData<K>);","highlight_start":15,"highlight_end":16}],"label":"type parameter would need to implement `Ord`","suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/doc_ng/id.rs","byte_start":152,"byte_end":155,"line_start":8,"line_end":8,"column_start":57,"column_end":60,"is_primary":false,"text":[{"text":"#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]","highlight_start":57,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"#[derive(Ord)]","def_site_span":{"file_name":"/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs","byte_start":36808,"byte_end":36821,"line_start":1118,"line_end":1118,"column_start":1,"column_end":14,"is_primary":false,"text":[{"text":"pub macro Ord($item:item) {","highlight_start":1,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},{"file_name":"src/doc_ng/id.rs","byte_start":175,"byte_end":177,"line_start":9,"line_end":9,"column_start":12,"column_end":14,"is_primary":true,"text":[{"text":"pub struct Id<K: IdKind>(Uuid, PhantomData<K>);","highlight_start":12,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/doc_ng/id.rs","byte_start":152,"byte_end":155,"line_start":8,"line_end":8,"column_start":57,"column_end":60,"is_primary":false,"text":[{"text":"#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]","highlight_start":57,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"#[derive(Ord)]","def_site_span":{"file_name":"/home/samitbasu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs","byte_start":36808,"byte_end":36821,"line_start":1118,"line_end":1118,"column_start":1,"column_end":14,"is_primary":false,"text":[{"text":"pub macro Ord($item:item) {","highlight_start":1,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[],"rendered":null},{"message":"consider manually implementing `Ord` to avoid undesired bounds","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"consider annotating `ActorKind` with `#[derive(Ord)]`","code":null,"level":"help","spans":[{"file_name":"src/doc_ng/id.rs","byte_start":983,"byte_end":983,"line_start":61,"line_end":61,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"pub struct ActorKind;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"#[derive(Ord)]\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0277]\u001b[0m\u001b[1m: the trait bound `ActorKind: Ord` is not satisfied\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/model.rs:57:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m54\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default)]\n   \u001b[1m\u001b[94m|\u001b[0m                                                  \u001b[1m\u001b[94m---\u001b[0m \u001b[1m\u001b[94min this derive macro expansion\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m57\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub actor: ActorId, // nil-actor default\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mthe trait `Ord` is not implemented for `ActorKind`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: the trait `Ord` \u001b[1m\u001b[35mis\u001b[0m implemented for `\u001b[1m\u001b[35mdoc_ng::id::Id<K>\u001b[0m`\n  \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/id.rs:8:57\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]\n   \u001b[1m\u001b[94m|\u001b[0m                                                         \u001b[1m\u001b[96m^^^\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: required for `doc_ng::id::Id<ActorKind>` to implement `Ord`\n  \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/id.rs:9:12\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]\n   \u001b[1m\u001b[94m|\u001b[0m                                                         \u001b[1m\u001b[94m---\u001b[0m \u001b[1m\u001b[94min this derive macro expansion\u001b[0m\n\u001b[1m\u001b[94m 9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct Id<K: IdKind>(Uuid, PhantomData<K>);\n   \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[92m^^\u001b[0m \u001b[1m\u001b[94m-\u001b[0m \u001b[1m\u001b[94mtype parameter would need to implement `Ord`\u001b[0m\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider manually implementing `Ord` to avoid undesired bounds\n\u001b[1m\u001b[96mhelp\u001b[0m: consider annotating `ActorKind` with `#[derive(Ord)]`\n  \u001b[1m\u001b[94m--> \u001b[0msrc/doc_ng/id.rs:61:1\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m61\u001b[0m \u001b[92m+ #[derive(Ord)]\u001b[0m\n\u001b[1m\u001b[94m62\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct ActorKind;\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"aborting due to 8 previous errors; 1 warning emitted","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[1m\u001b[91merror\u001b[0m\u001b[1m: aborting due to 8 previous errors; 1 warning emitted\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"Some errors have detailed explanations: E0204, E0277, E0308, E0369, E0432.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1mSome errors have detailed explanations: E0204, E0277, E0308, E0369, E0432.\u001b[0m\n"}
{"$message_type":"diagnostic","message":"For more information about an error, try `rustc --explain E0204`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1mFor more information about an error, try `rustc --explain E0204`.\u001b[0m\n"}
