use metrique::unit_of_work::metrics;
#[metrics(rename_all = "PascalCase")]
pub struct PublicMetrics {
pub public_field: usize,
private_field: usize,
pub(crate) crate_visible: usize,
}
#[metrics(rename_all = "PascalCase")]
struct PrivateMetrics {
pub public_field: usize,
private_field: usize,
pub(crate) crate_visible: usize,
}
#[metrics(rename_all = "PascalCase")]
pub(crate) struct CrateVisibleMetrics {
pub public_field: usize,
private_field: usize,
pub(crate) crate_visible: usize,
}
mod inner {
use metrique::unit_of_work::metrics;
#[metrics(rename_all = "PascalCase")]
pub struct PublicMetricsInMod {
pub public_field: usize,
private_field: usize,
pub(crate) crate_visible: usize,
pub(super) super_visible: usize,
}
#[metrics(rename_all = "PascalCase")]
pub(super) struct SuperVisibleMetrics {
pub(super) field: usize,
pub(super) private_field: usize,
}
pub fn create_and_export() -> PublicMetricsInMod {
PublicMetricsInMod {
public_field: 10,
private_field: 20,
crate_visible: 30,
super_visible: 40,
}
}
}
fn main() {
let _public_metrics = PublicMetrics {
public_field: 1,
private_field: 2,
crate_visible: 3,
};
let _private_metrics = PrivateMetrics {
public_field: 1,
private_field: 2,
crate_visible: 3,
};
let _crate_metrics = CrateVisibleMetrics {
public_field: 1,
private_field: 2,
crate_visible: 3,
};
let metrics_from_mod = inner::create_and_export();
let _val = metrics_from_mod.public_field;
let _val = metrics_from_mod.super_visible;
let super_metrics = inner::SuperVisibleMetrics {
field: 100,
private_field: 200,
};
let _val = super_metrics.field;
}