1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
//! Observable demand characteristics used in ecological interpretation.
use serde::{Deserialize, Serialize};
/// Apparent gender presentation as perceived by others.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ApparentGender {
/// Perceived as female.
Female,
/// Perceived as male.
Male,
/// Perceived as non-binary or gender nonconforming.
NonBinary,
/// Not specified or not perceived.
Unknown,
}
impl Default for ApparentGender {
fn default() -> Self {
ApparentGender::Unknown
}
}
/// Apparent racialization as perceived by others.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ApparentRace {
/// Socially privileged majority status in the current context.
Privileged,
/// Socially marginalized status in the current context.
Marginalized,
/// Not specified or not perceived.
Unknown,
}
impl Default for ApparentRace {
fn default() -> Self {
ApparentRace::Unknown
}
}
/// Visible traits that can affect social responses.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum VisibleTrait {
/// Visible marker that tends to trigger stigma in many contexts.
StigmatizedAppearance,
/// Visible marker associated with attractiveness or positive bias.
AttractivePresentation,
/// Visible marker associated with physical disability.
VisibleDisability,
/// Visible marker associated with economic hardship.
ApparentPoverty,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn apparent_gender_default_is_unknown() {
assert_eq!(ApparentGender::default(), ApparentGender::Unknown);
}
#[test]
fn apparent_race_default_is_unknown() {
assert_eq!(ApparentRace::default(), ApparentRace::Unknown);
}
}