前提・実現したいこと
The Rust Programming Language (日本語版)で学習中です。
chapter10.2で「use chapter10::{self, Summary, Tweet};」というコードがありますが、"chapter10"というディレクトリやファイルをどう作成すればよいかが不明なため、定義したtraitを読み込めずエラーとなります。
lib.rsに記載のtraitをmain.rsで呼び出すにはどうすればよいのでしょうか。
発生している問題・エラーメッセージ
error[E0432]: unresolved import `chapter10` --> main.rs:1:17 | 1 | use chapter10::{self, Summary, Tweet}; | ^^^^ no `chapter10` in the root error[E0422]: cannot find struct, variant or union type `Tweet` in this scope --> main.rs:4:17 | 4 | let tweet = Tweet{ | ^^^^^ not found in this scope error: aborting due to 2 previous errors Some errors have detailed explanations: E0422, E0432. For more information about an error, try `rustc --explain E0422`.
ディレクトリ構成
以下の2つで試しましたがいずれも同じエラーとなりました。
ケース1
chapter10/src/main.rs
chapter10/src/lib.rs
ケース2
chapter10/src/main.rs
chapter10/src/chapter10/lib.rs
該当のソースコード
いずれも、The Rust Programming Languageのコピーです。
lib.rs
Rust
1#![allow(unused)] 2fn main() { 3 pub trait Summary { 4 fn summarize(&self) -> String; 5 } 6 7 8 pub struct NewsArticle{ 9 pub headline: String, 10 pub location: String, 11 pub author: String, 12 pub content: String, 13 } 14 15 impl Summary for NewsArticle{ 16 fn summarize(&self) -> String{ 17 format!{"{}, by {} ({})", self.headline, self.author, self.location} 18 } 19 } 20 21 pub struct Tweet { 22 pub username: String, 23 pub content: String, 24 pub reply: bool, 25 pub retweet: bool, 26 } 27 28 impl Summary for Tweet{ 29 fn summarize(&self) -> String{ 30 format!("{}: {}", self.username, serlf.content) 31 } 32 } 33}
main.rs
Rust
1use chapter10::{self, Summary, Tweet}; 2 3fn main() { 4 let tweet = Tweet { 5 username: String::from("horse_ebooks"), 6 content: String::from( 7 // もちろん、ご存知かもしれませんがね、みなさん 8 "of course, as you probably already know, people", 9 ), 10 reply: false, 11 retweet: false, 12 }; 13 14 println!("1 new tweet: {}", tweet.summarize()); 15}
補足情報(FW/ツールのバージョンなど)
cargo 1.50.0 (f04e7fab7 2021-02-04)
rustc 1.50.0 (cb75ad5db 2021-02-10)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/06 11:40
2021/04/06 12:09
2021/04/11 01:06
2021/04/11 01:54