I'm using Rust 1.35.0 to try out some Rust examples and I could not get it to compile, as I keep getting the following message:
error[E0463]: can't find crate for `core`
I ran rustc --explain E0463
and I see the following message:
You need to link your code to the relevant crate in order to be able to use it
(through Cargo or the `-L` option of rustc example). Plugins are crates as
well, and you link to them the same way.
Here is my Cargo.toml:
[package]
name = "sensor-node"
version = "0.1.0"
authors = ["joesan <[email protected]>"]
edition = "2018"
[dependencies]
dwm1001 = "0.1.0"
panic-halt = "0.2.0"
nb = "0.1.1"
Here is my main.rs:
fn main() {
let s = String::from("hello"); // s comes into scope
takes_ownership(s); // s's value moves into the function...
// ... and so is no longer valid here
let x = 5; // x comes into scope
makes_copy(x); // x would move into the function,
// but i32 is Copy, so it’s okay to still
// use x afterward
} // Here, x goes out of scope, then s. But because s's value was moved, nothing
// special happens.
fn takes_ownership(some_string: String) { // some_string comes into scope
println!("{}", some_string);
} // Here, some_string goes out of scope and `drop` is called. The backing
// memory is freed.
fn makes_copy(some_integer: i32) { // some_integer comes into scope
println!("{}", some_integer);
} // Here, some_integer goes out of scope. Nothing special happens.
If you get an error: can't find crate for 'core', you're probably compiling for a different target (e.g. you're passing the target option to cargo build ). Now the compiler complains that it can't find the core library. This document gives a quick overview how to fix this problem.
If you get an error: can't find crate for 'core', you're probably compiling for a different target (e.g. you're passing the target option to cargo build ). Now the compiler complains that it can't find the core library. This document gives a quick overview how to fix this problem. For more details, see the rust-cross project.
This is done through argument flags. However, you are much better off not invoking the compiler at all, and instead letting cargo handle it. Use cargo new --bin projectname, then inside the directory it makes, cargo run will automatically find crates like rand and correctly pass them to the compiler.
I modified my project to have a dependency on a crate core which I pointed at a cargo compatible package containing the core library source. This actually works quite well. The next problem is that a dependency of my package tries to use extern crate core; and fails with the same error above.
Your code works fine on the Rust playground, so I recommend checking your Rust installation and environment settings.
You may want to use the preconfigured Rust Docker image to run your app. Have Docker installed, then:
docker pull rust
Go to your project folder and run:
docker run --rm --user "$(id -u)":"$(id -g)" -v "$PWD":/usr/src/myapp -w /usr/src/myapp rust cargo run
Output:
hello
5
For your simple example on a PC, you don't need any of these dependencies:
[dependencies]
dwm1001 = "0.1.0"
panic-halt = "0.2.0"
nb = "0.1.1"
Here are my steps to test your sample on Linux:
cargo new hello
cd hello
code .
Open main.rs
and paste your sample main.rs
and save:
fn main() {
let s = String::from("hello"); // s comes into scope
takes_ownership(s); // s's value moves into the function...
// ... and so is no longer valid here
let x = 5; // x comes into scope
makes_copy(x); // x would move into the function,
// but i32 is Copy, so it’s okay to still
// use x afterward
} // Here, x goes out of scope, then s. But because s's value was moved, nothing
// special happens.
fn takes_ownership(some_string: String) {
// some_string comes into scope
println!("{}", some_string);
} // Here, some_string goes out of scope and `drop` is called. The backing
// memory is freed.
fn makes_copy(some_integer: i32) {
// some_integer comes into scope
println!("{}", some_integer);
} // Here, some_integer goes out of scope. Nothing special happens.
In a terminal inside the hello
folder, run:
cargo run
And the output is good:
hello
5
This may help:
Shell command
rustup component list --installed
Output:
cargo-x86_64-unknown-linux-gnu
clippy-x86_64-unknown-linux-gnu
rls-x86_64-unknown-linux-gnu
rust-analysis-x86_64-unknown-linux-gnu
rust-docs-x86_64-unknown-linux-gnu
rust-src
rust-std-x86_64-unknown-linux-gnu
rustc-x86_64-unknown-linux-gnu
rustfmt-x86_64-unknown-linux-gnu
Shell command:
rustup show
Output:
Default host: x86_64-unknown-linux-gnu
installed toolchains
--------------------
stable-x86_64-unknown-linux-gnu (default)
nightly-x86_64-unknown-linux-gnu
active toolchain
----------------
stable-x86_64-unknown-linux-gnu (default)
rustc 1.35.0 (3c235d560 2019-05-20)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With