Estoy tratando de escribir una biblioteca de Rust con este diseño:

.
├── Cargo.lock
├── Cargo.toml
├── examples
│   └── main.rs
├── src
│   ├── client.rs
│   └── lib.rs
└── target
    └── rls
        └── debug
            ├── build
            ├── deps

client.rs tiene todo el código y la estructura del cliente es pública

lib.rs contiene pub mod client;

ejemplos / main.rs :

extern crate fistrs;

use fistrs::client::FistClient;

fn main() {
    let mut client = FistClient::new("localhost", "5575");
    client.connect();
}

Pero obtengo un error cuando ejecuto este rustc examples/main.rs

 --> examples/main.rs:1:1
  |
1 | extern crate fistrs;
  | ^^^^^^^^^^^^^^^^^^^^ can't find crate

Aquí está mi Cargo.toml

[package]
name = "fistrs"
version = "0.1.0"
authors = ["palash25 <npalash25@gmail.com>"]
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

2
Palash Nigam 30 sep. 2019 a las 17:52

1 respuesta

La mejor respuesta

La respuesta idiomática

cuando ejecuto este rustc examples/main.rs

No hagas eso. Utilice cargo run --example main o cargo build --example main en su lugar.

Véase también:

La respuesta literal

Cuando construyes un ejemplo, hay dos cajas involucradas:

  1. La caja de la biblioteca
  2. La caja de ejemplo

Debería construir la caja de la biblioteca, luego informar al compilador sobre esa caja cuando construya la caja de ejemplo. Este es un trabajo extremadamente tedioso que generalmente nadie quiere hacer. Se vería algo así como:

$ rustc --edition=2018 --crate-type=rlib --crate-name library_example src/lib.rs -o libmy_library.rlib
$ rustc --edition=2018 --extern library_example=libmy_library.rlib examples/main.rs

Véase también:

4
Shepmaster 30 sep. 2019 a las 15:30