Rust, with its focus on safety, speed, and concurrent programming, has gained popularity among developers. However, like any programming language, writing Rust code is not always smooth sailing. As developers, we encounter various challenges and roadblocks along the way. One common hurdle is dealing with error messages and codes. While error messages can be daunting, they provide invaluable insights into what went wrong and how to fix it.
In this article, we will dive into the world of Rust error messages, demystifying their codes and providing clear explanations. Our aim is to equip you with a better understanding of these error messages, enabling you to overcome obstacles efficiently and improve your coding experience.
We have compiled a comprehensive list of 100 Rust error messages and codes, along with their detailed explanations. By exploring each error message in a human and approachable manner, we hope to bridge the gap between complex technical jargon and practical understanding. Our goal is to provide you with the knowledge and insights needed to tackle Rust errors with confidence.
Whether you are a seasoned Rust developer or just starting your journey, this article serves as a valuable resource to enhance your troubleshooting skills. By unraveling the mysteries of Rust error messages, you will gain a deeper understanding of the language and develop effective strategies to handle errors in your code.
So, let’s embark on this enlightening journey through Rust error messages. Brace yourself, as we unravel the secrets behind these cryptic codes and empower you to overcome any obstacles that come your way. Together, we will conquer the challenges and unlock the full potential of Rust programming.
Rust error messages & codes
Error Code | Error Message | Explanation |
---|---|---|
E0001 | Internal Compiler Error | An internal compiler error has occurred, indicating a bug in the Rust compiler itself. It’s recommended to report this error to the Rust developers so that they can investigate and fix the issue. |
E0002 | Cannot find module | The specified module could not be found. Ensure that the module exists and is correctly referenced in your code. |
E0003 | Failed to resolve import | The import statement could not be resolved. Verify that the import is correct and that the module you are trying to import is accessible. |
E0015 | Cannot move out of borrowed content | You are trying to move a value out of borrowed content, which is not allowed in Rust. Make sure you are not attempting to move a value that is borrowed by another part of your code. |
E0034 | Multiple applicable methods in scope | Multiple methods with the same name are in scope, and the compiler is unable to determine which one to use. Provide more specific type information or disambiguate the method call by using fully qualified syntax. |
E0046 | Already borrowed: mutable | You are trying to borrow a value as mutable while it is already being borrowed as immutable. In Rust, you cannot have both mutable and immutable references to the same value at the same time. Ensure that you release the immutable reference before attempting to borrow the value as mutable. |
E0053 | Use of undeclared type or module | The type or module you are trying to use has not been declared or imported. Check for any typos in the name or ensure that the type or module is properly defined and accessible from your current scope. |
E0061 | Cannot move out of indexed content | You are trying to move a value out of an indexed content, such as an array or vector. Moving values out of indexed content is not allowed in Rust. Consider using references or cloning the value if you need to retain ownership. |
E0063 | Missing field in struct initialization | You are trying to initialize a struct but have missed a required field. Ensure that all required fields are provided during initialization. |
E0080 | Constant evaluation error | An error occurred during the evaluation of a constant expression. Check the expression for any issues, such as division by zero or invalid operations. |
E0106 | Missing lifetime specifier | A lifetime specifier is missing in a function or struct definition. Lifetimes are necessary when dealing with references to ensure memory safety. Add the required lifetime specifier to the appropriate location in your code. |
E0117 | Only named and lifetime parameters allowed here | The given parameter list is not allowed in the current context. Ensure that only named and lifetime parameters are used in the specified location. |
E0133 | Use of mistaken constant | The constant you are trying to use does not exist or has been renamed. Check for any typos or outdated constants in your code. |
E0152 | Unnecessary mutable reference | You have declared a mutable reference but never mutate the referenced value. Remove the mutable reference if it’s not needed. |
E0170 | Use of possibly uninitialized variable | You are using a variable that may not have been initialized. Ensure that all variables are properly initialized before use. |
E0185 | Type parameters with a default must be trailing | Type parameters with default values must be placed at the end of the type parameter list. Move the type parameters with default values to the end of the list. |
E0207 | Cannot call a method on a trait | You are trying to call a method on a trait object directly, which is not allowed in Rust. Trait objects do not have a known size, and method calls need to be done through a specific implementation of the trait. Consider using dynamic dispatch or static dispatch through generics instead. |
E0277 | The trait bound is not satisfied | The required trait bound is not satisfied for the given type. Make sure the type implements all the necessary traits specified in the bound. |
E0308 | mismatched types | The types of two expressions do not match where they are expected to. Check the types of the expressions involved and ensure they are compatible. |
E0369 | binary operation ... cannot be applied to type |
The specified binary operation cannot be applied to the given type. Review the types involved in the operation and ensure they are compatible with the desired operation. |
E0401 | can’t use type parameters from outer function | Type parameters from an outer function cannot be used in the current context. If you need to use the type parameter, consider moving it to the inner function or introducing a new type parameter specific to the current context. |
E0403 | cannot find method in current scope | The method you are trying to call is not defined or visible in the current scope. Ensure that the method is correctly spelled and accessible from the current scope. |
E0412 | cannot find type ... in this scope |
The specified type is not defined or visible in the current scope. Check for any typos in the type name or ensure that the type is properly defined and accessible from your current scope. |
E0422 | cannot find struct, variant or union type ... |
The specified struct, variant, or union type is not defined or visible in the current scope. Verify that the type is correctly spelled and accessible from your current scope. |
E0432 | unresolved import ... |
The import statement could not be resolved. Verify that the import is correct and that the module you are trying to import is accessible. Check for any typos in the import path and ensure that the module is properly defined. |
E0449 | unresolved name ... |
The specified name could not be resolved in the current scope. Ensure that the name is correctly spelled and accessible from your current scope. Check for any typos or missing imports that may be causing the issue. |
E0451 | field ... of struct ... is private |
The specified field of the struct is marked as private and cannot be accessed from outside the struct’s module. Consider changing the field’s visibility or adding a public accessor method if access to the field is required externally. |
E0499 | cannot borrow ... as mutable more than once |
You are trying to borrow a value as mutable multiple times, which is not allowed in Rust. Review your code and ensure that you are not borrowing the value more than once. Consider using different borrowing patterns or introducing additional scopes to limit the borrowing. |
E0507 | cannot move out of ... |
You are trying to move a value out of a type that does not implement the Copy trait. To move the value, it needs to be owned exclusively. Consider using references or cloning the value if you need to retain ownership while still using the original value. |
E0517 | cannot borrow ... as immutable because it is also borrowed as mutable |
You are trying to borrow a value as immutable while it is already being borrowed as mutable. In Rust, you cannot have both mutable and immutable references to the same value at the same time. Ensure that you release the mutable reference before attempting to borrow the value as immutable. |
E0522 | expected a closure that implements the Fn trait, but this closure only implements FnOnce |
The expected closure trait does not match the actual closure trait implemented. Make sure that the closure implements the correct trait (Fn , FnMut , or FnOnce ) based on how it’s used. If necessary, modify the closure or the function signature to match the expected trait. |
E0562 | match arms have incompatible types |
The types of the expressions in different arms of a match statement do not match. Ensure that all arms of the match statement return values of the same type. If necessary, use type annotations or convert the expressions to compatible types. |
E0571 | cannot take the value of a temporary value | You are trying to take a reference to a temporary value, which is not allowed in Rust. Temporary values do not have a stable memory location. If you need to take a reference, consider binding the value to a named variable before taking the reference. |
E0599 | no function or associated item named ... found for type ... in the current scope |
The specified function or associated item could not be found for the given type in the current scope. Ensure that the function or associated item is correctly spelled and accessible from the current scope. Check for any missing imports or incorrect visibility that may be causing the issue. |
E0603 | module ... is private |
The specified module is marked as private and cannot be accessed from outside its parent module. Consider changing the module’s visibility or moving the code that requires access to a different module. |
E0614 | type ... is private |
The specified type is marked as private and cannot be accessed from outside its parent module. Consider changing the type’s visibility or adding a public interface if access to the type is required externally. |
E0621 | explicit lifetime required in the type of ... |
An explicit lifetime is required in the type of the specified value. Lifetimes are necessary when dealing with references to ensure memory safety. Add the required lifetime specifier to the type or adjust the references to match the expected lifetime. |
E0660 | unresolved associated type | The specified associated type could not be resolved for the given trait. Make sure that the associated type is correctly spelled and defined for the trait. Check for any missing trait implementations or incorrect usage of associated types. |
E0698 | type parameters with a default must be specified on a type or a trait | Type parameters with default values must be specified on a type or a trait, not on a function or an impl block. Move the type parameters to the appropriate location or remove the default values if they are not needed. |
E0705 | use of possibly uninitialized mutable variable | You are using a mutable variable that may not have been initialized. Ensure that all mutable variables are properly initialized before use. |
E0716 | temporary value dropped while borrowed | You are borrowing a value from a temporary value, which is not allowed in Rust. Temporary values are typically cleaned up immediately, and borrowing them may lead to use-after-free errors. If you need to borrow a value, consider binding the temporary value to a named variable before borrowing from it. |
E0746 | cannot assign to ... which is behind a & reference |
You are trying to assign a value to a variable that is behind a reference. Rust prohibits modifying a value through an immutable reference. If you need to modify the value, consider using a mutable reference (&mut ) instead. |
E0752 | cannot borrow from an &mut as an & |
You are trying to borrow from a mutable reference as an immutable reference. Rust does not allow simultaneous mutable and immutable borrowing of the same value. If you need to borrow the value as immutable, consider borrowing directly from the original value or creating a new immutable reference. |
E0764 | recursive type has infinite size | The specified recursive type has an infinite size, which is not allowed in Rust. Rust requires that all types have a known size at compile-time. To resolve this error, consider using references or smart pointers (Box , Rc , Arc ) to break the recursion or redesign your data structures to avoid infinite types. |
E0773 | cyclic type of infinite size | The type you defined has a cyclic reference that leads to an infinite size. Rust requires that all types have a known size at compile-time. Review the type definitions and ensure that there are no cyclic dependencies between types. |
E0787 | conflicting implementations of trait ... for type ... |
Multiple conflicting implementations of the same trait have been provided for the given type. Rust does not allow overlapping implementations for the same trait and type. Remove the conflicting implementations or use specialization to define different behavior based on specific conditions. |
E0798 | type parameters must be constrained to match other types | Type parameters must be constrained to ensure that they match other types used within the same context. Add appropriate trait bounds or adjust the types to match the expected constraints. |
E0834 | the trait bound ... is not satisfied for type ... |
The required trait bound is not satisfied for the given type. Make sure the type implements all the necessary traits specified in the bound. Check for any missing trait implementations or incorrect usage of traits. |
E0842 | called function is not a Fn or FnMut closure |
The function you are trying to call does not implement the Fn or FnMut trait. Only types that implement these traits can be called as closures. Make sure you are using a function or closure that matches the expected trait requirement. |
E0868 | unexpected named lifetime | A named lifetime was encountered in a location where it is not expected. Check the context in which the lifetime is used and ensure that it is valid and necessary. |
E0879 | ... requires an Fn closure |
The specified type or function expects an Fn closure, but a different type or function was provided. Ensure that the provided closure matches the expected closure trait (Fn , FnMut , or FnOnce ) and signature. If necessary, modify the closure or the function signature to match the expected trait. |
E0892 | bad type for abstract ... |
The type used for an abstract trait or associated type is incorrect or does not match the expected constraints. Check the type used and ensure that it matches the expected requirements for the abstract trait or associated type. |
E0929 | cannot borrow ... as mutable because it is also borrowed as immutable |
You are trying to borrow a value as mutable while it is already being borrowed as immutable. In Rust, you cannot have both mutable and immutable references to the same value at the same time. Ensure that you release the immutable reference before attempting to borrow the value as mutable. |
E0942 | cannot apply unary operator ... to type ... |
The specified unary operator cannot be applied to the given type. Review the type and the unary operator used and ensure they are compatible. |
E0953 | use of undeclared lifetime parameter | The specified lifetime parameter has not been declared or is not in scope. Ensure that the lifetime parameter is correctly declared and accessible from the current scope. Check for any typos in the lifetime parameter name or ensure that it is properly defined. |
E0995 | duplicate associated type in ... |
The specified associated type has been defined more than once in the trait or the impl block. Remove the duplicate definition to resolve the issue. |
E0996 | conflicting generic parameters in ... |
The specified generic parameters have conflicting names or constraints. Ensure that each generic parameter has a unique name and that the constraints on the generic parameters are consistent. Remove or rename the conflicting generic parameters to resolve the issue. |
E0997 | conflicting definitions for associated item ... |
The specified associated item has conflicting definitions in the trait or the impl block. Remove the conflicting definitions to resolve the issue. |
E0998 | duplicate definitions with name ... |
The specified name has been defined more than once in the same scope. Remove the duplicate definitions or rename the conflicting names to resolve the issue. |
E0999 | duplicate method in trait implementation | The specified method has been defined more than once in the trait implementation. Remove the duplicate method to resolve the issue. |
E1003 | undeclared associated type ... |
The specified associated type has not been declared or is not part of the trait’s definition. Ensure that the associated type is correctly spelled and declared in the trait. |
E1036 | not all trait items implemented, missing: ... |
Not all required trait items have been implemented for the specified trait. Implement the missing trait items to satisfy the trait requirements. |
E1049 | multiple mutable references to the same data | You are trying to have multiple mutable references to the same data, which is not allowed in Rust. Rust enforces memory safety by allowing either one mutable reference or any number of immutable references. Ensure that you have exclusive ownership or use immutable references instead. |
E1057 | lifetime mismatch | There is a mismatch between lifetimes used in different parts of the code. Lifetimes must be compatible to ensure memory safety. Review the lifetimes used and adjust them to match the expected constraints and relationships. |
E1061 | conflicting borrowed data mutability | There is a conflict between mutable and immutable borrows in the same scope. Rust enforces exclusive ownership or shared immutability, but not both at the same time. Review your code and ensure that you are not borrowing the same data mutably and immutably within the same scope. |
E1072 | lifetime bound not satisfied | The required lifetime bound is not satisfied for the given type. Make sure the type implements all the necessary lifetime constraints specified in the bound. Check for any missing lifetime bounds or incorrect usage of lifetimes. |
E1103 | missing lifetime specifier | A lifetime specifier is missing in a function or struct definition. Lifetimes are necessary when dealing with references to ensure memory safety. Add the required lifetime specifier to the appropriate location in your code. |
E1107 | unimplemented trait method | A trait method has been defined but not implemented in the current context. Implement the missing trait method to satisfy the trait requirements. |
E1109 | missing field in initializer | You are trying to initialize a struct but have missed a required field. Ensure that all required fields are provided during initialization. |
E1120 | conflicting lifetimes | There is a conflict between lifetimes used in different parts of the code. Lifetimes must be compatible to ensure memory safety. Review the lifetimes used and adjust them to match the expected constraints and relationships. |
E1121 | trait bounds not satisfied | The required trait bounds are not satisfied for the given type. Make sure the type implements all the necessary traits specified in the bounds. Check for any missing trait implementations or incorrect usage of traits. |
E1123 | binary operation cannot be applied to types ... and ... |
The specified binary operation cannot be applied to the given types. Review the types involved in the operation and ensure they are compatible with the desired operation. If necessary, use type annotations or convert the types to compatible types. |
E1124 | ... does not implement the Copy trait |
The specified type does not implement the Copy trait, which is required for the operation you are trying to perform. Ensure that the type implements the necessary traits or consider using references if you need to retain ownership while performing the operation. |
E1126 | mismatched types for trait associated type | The types used for the associated type in the trait implementation do not match the trait’s definition. Ensure that the types match and satisfy the constraints specified in the trait. |
E1127 | wrong number of lifetime parameters | The specified number of lifetime parameters does not match the expected number. Check the lifetime parameter list and ensure that it matches the expected number of lifetimes required for the given context. |
E1128 | lifecycle mismatch | There is a mismatch between lifetimes used in different parts of the code. Lifetimes must be compatible to ensure memory safety. Review the lifetimes used and adjust them to match the expected constraints and relationships. |
E1129 | unexpected closure kind | The closure kind used does not match the expected kind. Check the closure’s usage and ensure that it is used in a way that matches the expected kind (Fn , FnMut , or FnOnce ). If necessary, modify the closure or the function signature to match the expected kind. |
E1131 | main function has wrong type |
The main function has the wrong type signature. Make sure the main function has the correct signature: fn main() -> Result<(), Box<dyn Error>> . |
E1204 | unescaped _ in numeric literal |
The underscore character (_ ) was found in a numeric literal. Remove the underscore character to resolve the issue. |
E1205 | formatting may be incompatible with trait | The specified formatting may be incompatible with the desired trait. Review the formatting used and ensure it matches the expected trait. If necessary, modify the formatting or the trait requirements to match each other. |
E1206 | formatted string is not a string literal | The formatted string provided is not a string literal. Only string literals can be used in formatted strings. Make sure to provide a string literal as the format string. |
E1207 | macro_rules! is not followed by a macro item |
The macro_rules! declaration is not followed by a macro item. Ensure that the macro_rules! declaration is followed by the definition of a macro. |
E1208 | invalid use of # |
The # symbol was used in an invalid way. Check the usage of the # symbol and ensure it is used correctly within the context it appears in. |
E0304 | cannot assign twice to immutable variable | You are trying to assign a value to an immutable variable more than once, which is not allowed in Rust. Immutable variables cannot be reassigned. If you need to modify the value, consider using a mutable variable (let mut ) instead. |
E0306 | mismatched types for assignment | The types of the assigned value and the target variable do not match. Check the types involved and ensure they are compatible. |
E0307 | multiple uses of moved value | You are trying to use a value that has already been moved or consumed. Once a value is moved, it cannot be used again. Ensure that you only use a value after it has been moved back or reassigned. |
E0309 | mismatched types for return | The return type of a function does not match the type of the returned expression. Check the types involved and ensure they are compatible. |
E0310 | the type of this value must be known in this context | The type of the value cannot be inferred in the current context. Provide a type annotation to specify the expected type or convert the value to a known type. |
E0311 | the length of this array cannot be known at compile time | The length of the array cannot be determined at compile-time. Consider using a dynamic data structure like a Vec instead. |
E0312 | no method named ... found in the implemented trait |
The specified method has not been implemented in the trait. Implement the missing trait method to satisfy the trait requirements. |
E0313 | no method named ... found for type ... in the current scope |
The specified method is not defined or visible in the current scope. Ensure that the method is correctly spelled and accessible from the current scope. |
E0316 | cannot assign to this expression | The expression on the left side of the assignment operator cannot be assigned a value. Ensure that you are using a mutable variable or a place that can be assigned a value. |
E0317 | match arms have incompatible types |
The types of the expressions in different arms of a match statement do not match. Ensure that all arms of the match statement return values of the same type. If necessary, use type annotations or convert the expressions to compatible types. |
E0322 | ... is a module, not a crate |
The specified name refers to a module, not a crate. Make sure to provide the correct name of the crate or use a qualified path to access the module. |
E0325 | unnecessary use of an extern crate item |
The extern crate statement is no longer needed in Rust 2018 edition and onwards. Remove the unnecessary extern crate statement. |
E0327 | #![feature] may not be used on the stable release channel |
The #![feature] attribute is only available on the nightly release channel of the Rust compiler. If you’re using a stable release, remove the #![feature] attribute or switch to the nightly release channel to enable the feature. |
E0328 | ... is unstable and may not be used in this context |
The specified feature or attribute is unstable and may not be used in the current context. Either remove the unstable feature or use a different approach to achieve the desired functionality. |
E0364 | use of undeclared crate or module |
The specified crate or module has not been declared or imported. Check for any typos in the name or ensure that the crate or module is properly defined and accessible from your current scope. |
E0365 | use of undeclared type or module | The type or module you are trying to use has not been declared or imported. Check for any typos in the name or ensure that the type or module is properly defined and accessible from your current scope. |
E0366 | move occurs because ... has type ... , which does not implement the Copy trait |
A move operation is occurring because the type does not implement the Copy trait. If you need to use the value after the move, consider using a type that implements the Copy trait or cloning the value before moving it. |
E0368 | binary operation ... cannot be applied to type ... |
The specified binary operation cannot be applied to the given type. Review the types involved in the operation and ensure they are compatible with the desired operation. |
E0372 | cannot borrow ... as mutable more than once |
You are trying to borrow a value as mutable multiple times, which is not allowed in Rust. Review your code and ensure that you are not borrowing the value more than once. Consider using different borrowing patterns or introducing additional scopes to limit the borrowing. |
E0373 | closure may outlive the current function | The closure you are trying to use may outlive the current function. Ensure that the closure captures variables with the appropriate lifetimes or use a FnOnce closure to consume captured variables. |
E0381 | use of moved value | You are trying to use a value that has already been moved or consumed. Once a value is moved, it cannot be used again. Ensure that you only use a value after it has been moved back or reassigned. |
E0382 | borrow of moved value | You are trying to borrow a value that has already been moved or consumed. Once a value is moved, it cannot be borrowed again until it is moved back or reassigned. Ensure that you only borrow the value after it has been moved back or reassigned. |
E0384 | cannot assign twice to immutable variable | You are trying to assign a value to an immutable variable more than once, which is not allowed in Rust. Immutable variables cannot be reassigned. If you need to modify the value, consider using a mutable variable (let mut ) instead. |
E0387 | borrow of moved value after partial move | You are trying to borrow a value that has been partially moved. Once a value is partially moved, it cannot be borrowed until the remaining parts are moved or consumed. Ensure that you only borrow the value after all necessary moves have been completed. |
E0388 | reference to non-existent field or method | The field or method you are trying to reference does not exist for the given type. Ensure that the field or method name is correctly spelled and accessible from the current scope. Check for any typos or missing imports that may be causing the issue. |
E0389 | cannot borrow ... as mutable because it is also borrowed as immutable |
You are trying to borrow a value as mutable while it is already being borrowed as immutable. In Rust, you cannot have both mutable and immutable references to the same value at the same time. Ensure that you release the immutable reference before attempting to borrow the value as mutable. |
E0424 | expected value, found module | A value was expected, but a module was found instead. Check the usage and ensure that you are using a value in the expected context. |
E0425 | unresolved name | The specified name could not be resolved in the current scope. Ensure that the name is correctly spelled and accessible from your current scope. Check for any typos or missing imports that may be causing the issue. |
E0426 | use of undeclared label | The label you are trying to use has not been declared or is not in scope. Ensure that the label is correctly spelled and accessible from the current scope. Check for any typos in the label name or ensure that it is properly defined. |
E0428 | the name ... is defined multiple times |
The specified name has been defined multiple times in the same scope. Remove the duplicate definitions or rename the conflicting names to resolve the issue. |
E0433 | failed to resolve: use of undeclared type or module ... |
The specified type or module has not been declared or imported. Check for any typos in the name or ensure that the type or module is properly defined and accessible from your current scope. |
E0435 | attempt to use a non-constant value in a constant | You are trying to use a non-constant value in a constant expression, which is not allowed in Rust. Constant expressions must be evaluated at compile-time and cannot depend on runtime values. If you need to use a runtime value, consider using a variable or a computed value instead of a constant. |
E0437 | type mismatch in range pattern | The types used in the range pattern do not match or are not compatible. Check the types involved and ensure they are compatible with each other. |
E0438 | pattern bindings are not allowed after @ |
Pattern bindings are not allowed after the @ symbol in Rust. Ensure that pattern bindings are placed before the @ symbol or adjust the pattern to match the desired behavior. |
E0451 | field ... of struct ... is private |
The specified field of the struct is marked as private and cannot be accessed from outside the struct’s module. Consider changing the field’s visibility or adding a public accessor method if access to the field is required externally. |
E0452 | cannot find function ... in this scope |
The specified function could not be found in the current scope. Check for any typos in the function name or ensure that the function is properly defined and accessible from your current scope. |
E0453 | use of undeclared method or associated function ... |
The specified method or associated function could not be found in the current scope. Check for any typos in the name or ensure that the method or associated function is properly defined and accessible from your current scope. |
E0463 | can’t find crate for ... |
The specified crate could not be found or is not accessible. Ensure that the crate is correctly referenced in your code and that it is available in your project’s dependencies. |
E0464 | multiple matching crates found | Multiple matching crates with the same name were found in your project’s dependencies. Specify the desired crate using its full path or resolve the conflict by adjusting your project’s dependencies. |
E0499 | cannot borrow ... as mutable more than once |
You are trying to borrow a value as mutable multiple times, which is not allowed in Rust. Review your code and ensure that you are not borrowing the value more than once. Consider using different borrowing patterns or introducing additional scopes to limit the borrowing. |
E0507 | cannot move out of ... |
You are trying to move a value out of a type that does not implement the Copy trait. To move the value, it needs to be owned exclusively. Consider using references or cloning the value if you need to retain ownership while still using the original value. |
E0517 | cannot borrow ... as immutable because it is also borrowed as mutable |
You are trying to borrow a value as immutable while it is already being borrowed as mutable. In Rust, you cannot have both mutable and immutable references to the same value at the same time. Ensure that you release the mutable reference before attempting to borrow the value as immutable. |
E0522 | expected a closure that implements the Fn trait, but this closure only implements FnOnce |
The expected closure trait does not match the actual closure trait implemented. Make sure that the closure implements the correct trait (Fn , FnMut , or FnOnce ) based on how it’s used. If necessary, modify the closure or the function signature to match the expected trait. |
E0562 | match arms have incompatible types |
The types of the expressions in different arms of a match statement do not match. Ensure that all arms of the match statement return values of the same type. If necessary, use type annotations or convert the expressions to compatible types. |
E0571 | cannot take the value of a temporary value | You are trying to take a reference to a temporary value, which is not allowed in Rust. Temporary values do not have a stable memory location. If you need to take a reference, consider binding the value to a named variable before taking the reference. |
E0599 | no function or associated item named ... found for type ... in the current scope |
The specified function or associated item could not be found for the given type in the current scope. Ensure that the function or associated item is correctly spelled and accessible from the current scope. Check for any missing imports or incorrect visibility that may be causing the issue. |
E0603 | module ... is private |
The specified module is marked as private and cannot be accessed from outside its parent module. Consider changing the module’s visibility or moving the code that requires access to a different module. |
E0614 | type ... is private |
The specified type is marked as private and cannot be accessed from outside its parent module. Consider changing the type’s visibility or adding a public interface if access to the type is required externally. |
E0621 | explicit lifetime required in the type of ... |
An explicit lifetime is required in the type of the specified value. Lifetimes are necessary when dealing with references to ensure memory safety. Add the required lifetime specifier to the type or adjust the references to match the expected lifetime. |
E0660 | unresolved associated type | The specified associated type could not be resolved for the given trait. Make sure that the associated type is correctly spelled and defined for the trait. Check for any missing trait implementations or incorrect usage of associated types. |
E0698 | type parameters with a default must be specified on a type or a trait | Type parameters with default values must be specified on a type or a trait, not on a function or an impl block. Move the type parameters to the appropriate location or remove the default values if they are not needed. |
E0705 | use of possibly uninitialized mutable variable | You are using a mutable variable that may not have been initialized. Ensure that all mutable variables are properly initialized before use. |
E0716 | temporary value dropped while borrowed | You are borrowing a value from a temporary value, which is not allowed in Rust. Temporary values are typically cleaned up immediately, and borrowing them may lead to use-after-free errors. If you need to borrow a value, consider binding the temporary value to a named variable before borrowing from it. |
E0746 | cannot assign to ... which is behind a & reference |
You are trying to assign a value to a variable that is behind a reference. Rust prohibits modifying a value through an immutable reference. If you need to modify the value, consider using a mutable reference (&mut ) instead. |
E0752 | cannot borrow from an &mut as an & |
You are trying to borrow from a mutable reference as an immutable reference. Rust does not allow simultaneous mutable and immutable borrowing of the same value. If you need to borrow the value as immutable, consider borrowing directly from the original value or creating a new immutable reference. |
E0764 | recursive type has infinite size | The specified recursive type has an infinite size, which is not allowed in Rust. Rust requires that all types have a known size at compile-time. To resolve this error, consider using references or smart pointers (Box , Rc , Arc ) to break the recursion or redesign your data structures to avoid infinite types. |
E0773 | cyclic type of infinite size | The type you defined has a cyclic reference that leads to an infinite size. Rust requires that all types have a known size at compile-time. Review the type definitions and ensure that there are no cyclic dependencies between types. |
E0787 | conflicting implementations of trait ... for type ... |
Multiple conflicting implementations of the same trait have been provided for the given type. Rust does not allow overlapping implementations for the same trait and type. Remove the conflicting implementations or use specialization to define different behavior based on specific conditions. |
E0798 | type parameters must be constrained to match other types | Type parameters must be constrained to ensure that they match other types used within the same context. Add appropriate trait bounds or adjust the types to match the expected constraints. |
E0834 | the trait bound ... is not satisfied for type ... |
The required trait bound is not satisfied for the given type. Make sure the type implements all the necessary traits specified in the bound. Check for any missing trait implementations or incorrect usage of traits. |
E0842 | called function is not a Fn or FnMut closure |
The function you are trying to call does not implement the Fn or FnMut trait. Only types that implement these traits can be called as closures. Make sure you are using a function or closure that matches the expected trait requirement. |
E0868 | unexpected named lifetime | A named lifetime was encountered in a location where it is not expected. Check the context in which the lifetime is used and ensure that it is valid and necessary. |
E0879 | ... requires an Fn closure |
The specified type or function expects an Fn closure, but a different type or function was provided. Ensure that the provided closure matches the expected closure trait (Fn , FnMut , or FnOnce ) and signature. If necessary, modify the closure or the function signature to match the expected trait and signature. |
E0892 | bad type for abstract ... |
The type used for an abstract trait or associated type is incorrect or does not match the expected constraints. Check the type used and ensure that it matches the expected requirements for the abstract trait or associated type. |
E0929 | cannot borrow ... as mutable because it is also borrowed as immutable |
You are trying to borrow a value as mutable while it is already being borrowed as immutable. In Rust, you cannot have both mutable and immutable references to the same value at the same time. Ensure that you release the immutable reference before attempting to borrow the value as mutable. |
E0942 | cannot apply unary operator ... to type ... |
The specified unary operator cannot be applied to the given type. Review the type and the unary operator used and ensure they are compatible. |
E0953 | use of undeclared lifetime parameter | The specified lifetime parameter has not been declared or is not in scope. Ensure that the lifetime parameter is correctly declared and accessible from the current scope. Check for any typos in the lifetime parameter name or ensure that it is properly defined. |
E0995 | duplicate associated type in ... |
The specified associated type has been defined more than once in the trait or the impl block. Remove the duplicate definition to resolve the issue. |
E0996 | conflicting generic parameters in ... |
The specified generic parameters have conflicting names or constraints. Ensure that each generic parameter has a unique name and that the constraints on the generic parameters are consistent. Remove or rename the conflicting generic parameters to resolve the issue. |
E0997 | conflicting definitions for associated item ... |
The specified associated item has conflicting definitions in the trait or the impl block. Remove the conflicting definitions to resolve the issue. |
E0998 | duplicate definitions with name ... |
The specified name has been defined more than once in the same scope. Remove the duplicate definitions or rename the conflicting names to resolve the issue. |
E0999 | duplicate method in trait implementation | The specified method has been defined more than once in the trait implementation. Remove the duplicate method to resolve the issue. |
E1003 | undeclared associated type ... |
The specified associated type has not been declared or is not part of the trait’s definition. Ensure that the associated type is correctly spelled and declared in the trait. |
E1036 | not all trait items implemented, missing: ... |
Not all required trait items have been implemented for the specified trait. Implement the missing trait items to satisfy the trait requirements. |
E1049 | multiple mutable references to the same data | You are trying to have multiple mutable references to the same data, which is not allowed in Rust. Rust enforces memory safety by allowing either one mutable reference or any number of immutable references. Ensure that you have exclusive ownership or use immutable references instead. |
E1057 | lifetime mismatch | There is a mismatch between lifetimes used in different parts of the code. Lifetimes must be compatible to ensure memory safety. Review the lifetimes used and adjust them to match the expected constraints and relationships. |
E1061 | conflicting borrowed data mutability | There is a conflict between mutable and immutable borrows in the same scope. Rust enforces exclusive ownership or shared immutability, but not both at the same time. Review your code and ensure that you are not borrowing the same data mutably and immutably within the same scope. |
E1072 | lifetime bound not satisfied | The required lifetime bound is not satisfied for the given type. Make sure the type implements all the necessary lifetime constraints specified in the bound. Check for any missing lifetime bounds or incorrect usage of lifetimes. |
E1103 | missing lifetime specifier | A lifetime specifier is missing in a function or struct definition. Lifetimes are necessary when dealing with references to ensure memory safety. Add the required lifetime specifier to the appropriate location in your code. |
E1107 | unimplemented trait method | A trait method has been defined but not implemented in the current context. Implement the missing trait method to satisfy the trait requirements. |
E1109 | missing field in initializer | You are trying to initialize a struct but have missed a required field. Ensure that all required fields are provided during initialization. |
E1120 | conflicting lifetimes | There is a conflict between lifetimes used in different parts of the code. Lifetimes must be compatible to ensure memory safety. Review the lifetimes used and adjust them to match the expected constraints and relationships. |
E1121 | trait bounds not satisfied | The required trait bounds are not satisfied for the given type. Make sure the type implements all the necessary traits specified in the bounds. Check for any missing trait implementations or incorrect usage of traits. |
E1123 | binary operation cannot be applied to types ... and ... |
The specified binary operation cannot be applied to the given types. Review the types involved in the operation and ensure they are compatible with the desired operation. If necessary, use type annotations or convert the types to compatible types. |
E1124 | ... does not implement the Copy trait |
The specified type does not implement the Copy trait, which is required for the operation you are trying to perform. Ensure that the type implements the necessary traits or consider using references if you need to retain ownership while performing the operation. |
E1126 | mismatched types for trait associated type | The types used for the associated type in the trait implementation do not match the trait’s definition. Ensure that the types match and satisfy the constraints specified in the trait. |
E1127 | wrong number of lifetime parameters | The specified number of lifetime parameters does not match the expected number. Check the lifetime parameter list and ensure that it matches the expected number of lifetimes required for the given context. |
E1128 | lifecycle mismatch | There is a mismatch between lifetimes used in different parts of the code. Lifetimes must be compatible to ensure memory safety. Review the lifetimes used and adjust them to match the expected constraints and relationships. |
E1129 | unexpected closure kind | The closure kind used does not match the expected kind. Check the closure’s usage and ensure that it is used in a way that matches the expected kind (Fn , FnMut , or FnOnce ). If necessary, modify the closure or the function signature to match the expected kind. |
E1131 | main function has wrong type |
The main function has the wrong type signature. Make sure the main function has the correct signature: fn main() -> Result<(), Box<dyn Error>> . |
E1204 | unescaped _ in numeric literal |
The underscore character (_ ) was found in a numeric literal. Remove the underscore character to resolve the issue. |
E1205 | formatting may be incompatible with trait | The specified formatting may be incompatible with the desired trait. Review the formatting used and ensure it matches the expected trait. If necessary, modify the formatting or the trait requirements to match each other. |
E1206 | formatted string is not a string literal | The formatted string provided is not a string literal. Only string literals can be used in formatted strings. Make sure to provide a string literal as the format string. |
E1207 | macro_rules! is not followed by a macro item |
The macro_rules! declaration is not followed by a macro item. Ensure that the macro_rules! declaration is followed by the definition of a macro. |
E1208 | invalid use of # |
The # symbol was used in an invalid way. Check the usage of the # symbol and ensure it is used correctly within the context it appears in. |
E0304 | cannot assign twice to immutable variable | You are trying to assign a value to an immutable variable more than once, which is not allowed in Rust. Immutable variables cannot be reassigned. If you need to modify the value, consider using a mutable variable (let mut ) instead. |
E0306 | mismatched types for assignment | The types of the assigned value and the target variable do not match. Check the types involved and ensure they are compatible. |
E0307 | multiple uses of moved value | You are trying to use a value that has already been moved or consumed. Once a value is moved, it cannot be used again. Ensure that you only use a value after it has been moved back or reassigned. |
E0309 | mismatched types for return | The return type of a function does not match the type of the returned expression. Check the types involved and ensure they are compatible. |
E0310 | the type of this value must be known in this context | The type of the value cannot be inferred in the current context. Provide a type annotation to specify the expected type or convert the value to a known type. |
E0311 | the length of this array cannot be known at compile time | The length of the array cannot be determined at compile-time. Consider using a dynamic data structure like a Vec instead. |
E0312 | no method named ... found in the implemented trait |
The specified method has not been implemented in the trait. Implement the missing trait method to satisfy the trait requirements. |
E0313 | no method named ... found for type ... in the current scope |
The specified method is not defined or visible in the current scope. Ensure that the method is correctly spelled and accessible from the current scope. |
E0316 | cannot assign to this expression | The expression on the left side of the assignment operator cannot be assigned a value. Ensure that you are using a mutable variable or a place that can be assigned a value. |
E0317 | match arms have incompatible types |
The types of the expressions in different arms of a match statement do not match. Ensure that all arms of the match statement return values of the same type. If necessary, use type annotations or convert the expressions to compatible types. |
E0322 | ... is a module, not a crate |
The specified name refers to a module, not a crate. Make sure to provide the correct name of the crate or use a qualified path to access the module. |
E0325 | unnecessary use of an extern crate item |
The extern crate statement is no longer needed in Rust 2018 edition and onwards. Remove the unnecessary extern crate statement. |
E0327 | #![feature] may not be used on the stable release channel |
The #![feature] attribute is only available on the nightly release channel of the Rust compiler. If you’re using a stable release, remove the #![feature] attribute or switch to the nightly release channel to enable the feature. |
E0328 | ... is unstable and may not be used in this context |
The specified feature or attribute is unstable and may not be used in the current context. Either remove the unstable feature or use a different approach to achieve the desired functionality. |
E0364 | use of undeclared crate or module |
The specified crate or module has not been declared or imported. Check for any typos in the name or ensure that the crate or module is properly defined and accessible from your current scope. |
E0365 | use of undeclared type or module | The type or module you are trying to use has not been declared or imported. Check for any typos in the name or ensure that the type or module is properly defined and accessible from your current scope. |
E0366 | move occurs because ... has type ... , which does not implement the Copy trait |
A move operation is occurring because the type does not implement the Copy trait. If you need to use the value after the move, consider using a type that implements the Copy trait or cloning the value before moving it. |
E0368 | binary operation ... cannot be applied to type ... |
The specified binary operation cannot be applied to the given type. Review the types involved in the operation and ensure they are compatible with the desired operation. |
E0372 | cannot borrow ... as mutable more than once |
You are trying to borrow a value as mutable multiple times, which is not allowed in Rust. Review your code and ensure that you are not borrowing the value more than once. Consider using different borrowing patterns or introducing additional scopes to limit the borrowing. |
E0373 | closure may outlive the current function | The closure you are trying to use may outlive the current function. Ensure that the closure captures variables with the appropriate lifetimes or use a FnOnce closure to consume captured variables. |
E0381 | use of moved value | You are trying to use a value that has already been moved or consumed. Once a value is moved, it cannot be used again. Ensure that you only use a value after it has been moved back or reassigned. |
E0382 | borrow of moved value | You are trying to borrow a value that has already been moved or consumed. |
Error Code | Error Message and Explanation |
---|---|
E0383 | Borrow of possibly uninitialized variable: You are trying to borrow a variable that may not have been initialized. Ensure that the variable is properly initialized before attempting to borrow it. |
E0385 | Moved value used: You are trying to use a value that has been moved or consumed. Once a value is moved, it cannot be used again. Make sure to use the value before moving it or assign it back if necessary. |
E0386 | Use of partially moved value: You are trying to use a value that has been partially moved. Once a value is partially moved, it cannot be used until the remaining parts are moved or consumed. Ensure that all necessary moves have been completed before using the value. |
E0389 | Unresolved import: The specified import could not be resolved. Check for any typos in the import statement or ensure that the imported item exists and is accessible. |
E0390 | Invalid escape character: The specified escape character is invalid. Check the escape sequence and ensure that it corresponds to a valid escape character in Rust. |
E0391 | Unsupported character escape: The specified character escape is not supported in Rust. Check the character escape sequence and ensure that it is a valid escape sequence in Rust. |
E0392 | Parameter has incomplete type: The parameter has an incomplete type. Make sure that the type is fully defined and can be used in the given context. |
E0393 | The type cannot be dereferenced: The specified type cannot be dereferenced. Ensure that the type implements the Deref trait to enable dereferencing. |
E0394 | Cannot create a non-box smart pointer: You are trying to create a smart pointer that is not a Box . Currently, only Box supports custom smart pointer creation. |
E0395 | impl trait for type outside of crate: The impl block for the specified trait is being used outside of the crate where the trait is defined. Ensure that the impl block is used within the correct crate or restructure your code accordingly. |
E0396 | Expected function, found ... : A function was expected, but a different item was found instead. Check the usage and ensure that you are using a function in the expected context. |
E0397 | ... is not a trait: The specified item is not a trait. Make sure that you are referring to a trait in the given context. |
E0398 | Pattern does not mention field ... : The pattern used does not include the specified field. Ensure that the pattern matches the structure of the data and includes all required fields. |
E0399 | Missing field ... in initializer: The specified field is missing in the initializer. Make sure to provide a value for all required fields. |
E0400 | Closure is expected to take 1 argument, but it takes ... : The closure is expected to take a specific number of arguments, but it takes a different number of arguments. Check the closure’s signature and ensure that it matches the expected number of arguments. |
E0401 | Can’t use type parameters from outer function: The type parameters from an outer function cannot be used in the inner function. Make sure that the type parameters are defined within the same scope or adjust the code accordingly. |
E0402 | Cannot use an outer type parameter in this context: An outer type parameter is being used in a context where it is not allowed. Ensure that the type parameter is used within a valid context or adjust the code accordingly. |
E0403 | The name ... is used multiple times: The specified name is used multiple times in the same scope. Rename the conflicting names to resolve the issue. |
E0404 | Trait ... is not implemented for type ... : The specified trait is not implemented for the given type. Implement the missing trait for the type to satisfy the trait requirements. |
E0405 | Cannot find an ... in this scope: The specified item could not be found in the current scope. Check for any typos in the name or ensure that the item is properly defined and accessible. |
E0406 | Undeclared trait or type: The specified trait or type has not been declared or imported. Check for any typos in the name or ensure that the trait or type is properly defined and accessible from your current scope. |
E0407 | Method not found in trait: The specified method could not be found in the trait. Ensure that the method is correctly spelled and defined in the trait. |
E0408 | Cannot implement inherent associated trait ... for a type that doesn’t satisfy ... : The inherent associated trait cannot be implemented for a type that does not satisfy the associated trait bounds. Ensure that the type satisfies the associated trait bounds or adjust the implementation accordingly. |
E0409 | Use of undeclared crate feature: The specified crate feature has not been declared or enabled. Check for any typos in the feature name or ensure that the feature is properly defined and enabled in your project’s dependencies. |
E0410 | Undefined behavior during borrow: The code has triggered undefined behavior during a borrow. Review the code and ensure that borrows are performed correctly, adhering to Rust’s borrowing rules. |
E0411 | Use of uninitialized variable: The variable is used before being initialized. Make sure to properly initialize the variable before using it. |
E0412 | Use of deprecated item: The specified item has been deprecated and should not be used. Consider using an alternative item or updating your code to adhere to the recommended practices. |
E0413 | Use of undeclared type, value, or module: The specified type, value, or module has not been declared or imported. Check for any typos in the name or ensure that the type, value, or module is properly defined and accessible from your current scope. |
E0414 | Private type in public interface: A private type is being exposed in a public interface. Make sure that all types used in the public interface are accessible and have appropriate visibility. |
E0415 | Unused import: The imported item is not used in the current scope. Remove the unused import to declutter the code. |
E0416 | Cannot find type ... in this scope: The specified type could not be found in the current scope. Check for any typos in the name or ensure that the type is properly defined and accessible. |
E0417 | Undefined label: The specified label is undefined. Ensure that the label is correctly spelled and defined within the appropriate context. |
E0418 | Attempt to use a non-constant value in a constant: A non-constant value is being used in a constant. Constants require values that can be determined at compile-time. Use a constant or a value that can be computed at compile-time. |
E0419 | Unreachable statement: The statement is unreachable and will not be executed. Remove or adjust the unreachable statement to ensure that the code execution flows correctly. |
E0420 | Unreachable pattern: The pattern is unreachable and will never match. Remove or adjust the unreachable pattern to ensure that all patterns are reachable and exhaustive. |
E0422 | Cannot find structure ... in module ... : The specified structure could not be found in the module. Check for any typos in the name or ensure that the structure is properly defined and accessible within the module. |
E0423 | Attempt to use a deleted function: The specified function has been deleted and cannot be used. Remove the usage of the deleted function or replace it with an alternative implementation. |
E0424 | Expected function, found module: A function was expected, but a module was found instead. Check the usage and ensure that you are using a function in the expected context. |
E0425 | Unresolved name: The specified name could not be resolved. Check for any typos in the name or ensure that the name is properly defined and accessible. |
E0426 | Use of undeclared label: The specified label has not been declared or is not in scope. Ensure that the label is correctly spelled and properly defined within the appropriate context. |
E0427 | Expected constant, found variable: A constant was expected, but a variable was found instead. Check the usage and ensure that you are using a constant in the expected context. |
E0428 | The name ... is defined multiple times: The specified name is defined multiple times in the same scope. Rename the conflicting names to resolve the issue. |
E0429 | Unresolved import: The specified import could not be resolved. Check for any typos in the import statement or ensure that the imported item exists and is accessible. |
E0430 | The name ... is defined multiple times with different types: The specified name is defined multiple times with different types in the same scope. Rename the conflicting names or adjust the code to resolve the type conflicts. |
E0431 | Cannot find function ... in this scope: The specified function could not be found in the current scope. Check for any typos in the name or ensure that the function is properly defined and accessible. |
E0432 | Unresolved import: The specified import could not be resolved. Check for any typos in the import statement or ensure that the imported item exists and is accessible. |
E0433 | Failed to resolve. Use of undeclared type or module ... : The specified type or module has not been declared or imported. Check for any typos in the name or ensure that the type or module is properly defined and accessible from your current scope. |
E0434 | Attempted to use a non-existent label: The specified label does not exist. Ensure that the label is correctly spelled and properly defined within the appropriate context. |
E0435 | Attempted to use a non-existent type or module ... : The specified type or module does not exist. Check for any typos in the name or ensure that the type or module is properly defined and accessible from your current scope. |
E0436 | The name ... is defined multiple times with different meanings: The specified name is defined multiple times with different meanings in the same scope. Rename the conflicting names or adjust the code to resolve the conflicts. |
E0437 | ... can only be used in the same crate where it is defined: The specified item can only be used within the crate where it is defined. Ensure that the item is used within the correct crate or adjust the code accordingly. |
E0438 | Attempt to use a non-constant value in a constant: A non-constant value is being used in a constant. Constants require values that can be determined at compile-time. Use a constant or a value that can be computed at compile-time. |
E0439 | The name ... is defined multiple times with different values: The specified name is defined multiple times with different values in the same scope. Rename the conflicting names or adjust the code to resolve the value conflicts. |
E0440 | Use of unresolved identifier: The specified identifier could not be resolved. Check for any typos in the name or ensure that the identifier is properly defined and accessible. |
E0441 | The name ... is defined multiple times: The specified name is defined multiple times in the same scope. Rename the conflicting names to resolve the issue. |
E0442 | The name ... is defined multiple times with different types: The specified name is defined multiple times with different types in the same scope. Rename the conflicting names or adjust the code to resolve the type conflicts. |
E0443 | The trait ... is not implemented for the type ... : The specified trait is not implemented for the given type. Implement the missing trait for the type to satisfy the trait requirements. |
E0444 | The trait bound ... is not satisfied: The required trait bound is not satisfied for the given type. Make sure the type implements all the necessary traits specified in the bound. |
E0445 | The trait ... is implemented multiple times for this type: The specified trait is implemented multiple times for the given type. Remove the duplicate implementations to resolve the issue. |
E0446 | The trait ... is not in scope: The specified trait is not in scope. Ensure that the trait is properly imported or defined within the current scope. |
E0447 | The trait ... is not implemented for this type: The specified trait is not implemented for the given type. Implement the missing trait for the type to satisfy the trait requirements. |
E0448 | The trait ... is not implemented for this type: The specified trait is not implemented for the given type. Implement the missing trait for the type to satisfy the trait requirements. |
E0449 | The trait ... is not implemented for the type ... [E0277]: The specified trait is not implemented for the given type. Implement the missing trait for the type to satisfy the trait requirements. |