如何修复给出此代码示例的编译错误?
pub mod media {
pub struct AudioDevice {
rec_id: i16,
play_id: i16,
}
pub fn audio_device() -> AudioDevice {
AudioDevice {
rec_id: -1,
play_id: -1,
}
}
}
struct Card {
record_id: i16,
play_id: i16,
}
fn card() -> Card {
Card {
record_id: 1,
play_id: 1,
}
}
fn main() {
use media::*;
let _sample: AudioDevice = crate::media::audio_device();
let _card = card();
println!("record_id: {}, play_id: {}", _card.record_id, _card.play_id);
println!(
"map rec_id: {}, play_id: {} ",
_sample.play_id, _sample.rec_id
);
}
error[E0616]: field `play_id` of struct `media::AudioDevice` is private
--> src/main.rs:34:9
|
34 | _sample.play_id, _sample.rec_id
| ^^^^^^^^^^^^^^^
error[E0616]: field `rec_id` of struct `media::AudioDevice` is private
--> src/main.rs:34:26
|
34 | _sample.play_id, _sample.rec_id
| ^^^^^^^^^^^^^^
最佳答案
AudioDevice 是一个公共(public)结构,但它的成员字段默认是私有(private)的。
println!("record_id: {}, play_id: {}", _card.record_id, _card.play_id);
^
您正在从结构外部访问私有(private)字段。
您可以通过多种方式解决此问题。一种方法是公开字段:
pub struct AudioDevice {
pub rec_id: i16,
pub play_id: i16,
}
关于rust - 在 rust 中访问 mod 内部的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60983963/