質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Rust

Rustは、MoFoが支援するプログラミング言語。高速性を維持しつつも、メモリ管理を安全に行うことが可能な言語です。同じコンパイル言語であるC言語やC++では困難だったマルチスレッドを実装しやすく、並行性という点においても優れています。

解決済

rustの構造体を使ったプログラムの実装

takahashi1031
takahashi1031

総合スコア7

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Rust

Rustは、MoFoが支援するプログラミング言語。高速性を維持しつつも、メモリ管理を安全に行うことが可能な言語です。同じコンパイル言語であるC言語やC++では困難だったマルチスレッドを実装しやすく、並行性という点においても優れています。

1回答

0評価

0クリップ

408閲覧

投稿2021/11/29 07:28

rustの構造体を使って以下のことを実装したい

set_enable関数はenabledをtrue(1)にする
set_direction関数はenabledがtrueではないとき処理を抜け、trueである場合directionをtrueに
set_output_statusはenabledがtrueではないかつdirectionもtrueではないとき処理を抜け
trueである場合 outputをtrueにする

rust

struct Gpio{ enabled:bool, direction:bool, output:bool, mode:u32 } impl Gpio{ pub fn set_enable(&mut self){ self.enabled=true; } pub fn set_direction(&mut self){ if self.enabled=!true{ Err(); } self.direction=true; } pub fn set_output_status(&mut self){ if self.enabled=!true{ Err(); } if self.direction=!true{ Err(); } self.output=true; } } fn main(){ let mut gpio=Gpio{ enabled:true, direction:true, output:true, }; gpio.set_enable(); let pin=gpio.set_enable(); println!("{}",pin); }

実行すると以下のようなエラーが出ますがどこをどう修正すればいいかわかりません
助言をお願いしたいです

rror[E0425]: cannot find value `enabled` in this scope --> src\main.rs:10:9 | 10 | enabled=true; | ^^^^^^^ help: you might have meant to use the available field: `self.enabled` error[E0425]: cannot find value `enabled` in this scope --> src\main.rs:14:12 | 14 | if enabled=!true{ | ^^^^^^^ | help: you might have meant to use pattern matching | 14 | if let enabled=!true{ | ^^^ help: you might have meant to use the available field | 14 | if self.enabled=!true{ | ^^^^^^^^^^^^ error[E0425]: cannot find value `direction` in this scope --> src\main.rs:17:9 | 17 | direction=true; | ^^^^^^^^^ help: you might have meant to use the available field: `self.direction` error[E0425]: cannot find value `enabled` in this scope --> src\main.rs:21:12 | 21 | if enabled=!true{ | ^^^^^^^ | help: you might have meant to use pattern matching | 21 | if let enabled=!true{ | ^^^ help: you might have meant to use the available field | 21 | if self.enabled=!true{ | ^^^^^^^^^^^^ error[E0425]: cannot find value `direction` in this scope --> src\main.rs:24:12 | 24 | if direction=!true{ | ^^^^^^^^^ | help: you might have meant to use pattern matching | 24 | if let direction=!true{ | ^^^ help: you might have meant to use the available field | 24 | if self.direction=!true{ | ^^^^^^^^^^^^^^ error[E0425]: cannot find value `output` in this scope --> src\main.rs:27:9 | 27 | output=true; | ^^^^^^ help: you might have meant to use the available field: `self.output` error[E0061]: this function takes 1 argument but 0 arguments were supplied --> src\main.rs:15:13 | 15 | Err(); | ^^^-- supplied 0 arguments | | | expected 1 argument error[E0061]: this function takes 1 argument but 0 arguments were supplied --> src\main.rs:22:13 | 22 | Err(); | ^^^-- supplied 0 arguments | | | expected 1 argument error[E0061]: this function takes 1 argument but 0 arguments were supplied --> src\main.rs:25:13 | 25 | Err(); | ^^^-- supplied 0 arguments | | | expected 1 argument error[E0063]: missing field `mode` in initializer of `Gpio` --> src\main.rs:32:18 | 32 | let mut gpio=Gpio{ | ^^^^ missing `mode` error[E0277]: `()` doesn't implement `std::fmt::Display` --> src\main.rs:39:19 | 39 | println!("{}",pin); | ^^^ `()` cannot be formatted with the default formatter | = help: the trait `std::fmt::Display` is not implemented for `()` = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead = note: required by `std::fmt::Display::fmt` = note: this error originates in the macro `$crate::format_args_nl` (in Nightly builds, run with -Z macro-backtrace for more info) error: aborting due to 11 previous errors Some errors have detailed explanations: E0061, E0063, E0277, E0425. For more information about an error, try `rustc --explain E0061`. error: could not compile `test_cargo` To learn more, run the command again with --verbose.

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

ozwk

2021/11/29 07:38

過去の質問が4つほど放置されています。処理してください。
takahashi1031

2021/11/29 07:59

Err()で処理を抜ける方法がわかりません。Result型というのにしなくてはいけないようですが breakでifを抜けれるかと思いやってみるとエラーが出てしまいます。 ここも助言いただければ幸いです

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Rust

Rustは、MoFoが支援するプログラミング言語。高速性を維持しつつも、メモリ管理を安全に行うことが可能な言語です。同じコンパイル言語であるC言語やC++では困難だったマルチスレッドを実装しやすく、並行性という点においても優れています。