pub struct Label<T: LabelMembership> { /* private fields */ }Expand description
Fuzzy label struct.
It is defined by a membership function and a name.
Implementations§
Source§impl<T: LabelMembership> Label<T>
impl<T: LabelMembership> Label<T>
Sourcepub fn new(name: String, membership: T) -> Result<Self, LabelError>
pub fn new(name: String, membership: T) -> Result<Self, LabelError>
Creates a new label.
§Arguments
name: Label name.membership: Membership function.
§Examples
let label = Label::new(
String::from("a"),
Trapezoidal::new(vec![0.0, 0.5, 1.0]).unwrap()
).unwrap();
assert_eq!(format!("{}", label), "a => (0.00, 0.50, 1.00)");§Errors
LabelError::NonStandardizedName: If name isn’t standardized.
let names = vec![" a", "A", " c "];
for name in names {
assert_eq!(
Label::new(
name.to_string(),
Trapezoidal::new(vec![0.0, 0.5, 1.0]).unwrap()
),
Err(LabelError::NonStandardizedName { name: name.to_string() })
);
}LabelError::EmptyName: If name.len() == 0.
assert_eq!(
Label::new(
String::new(),
Trapezoidal::new(vec![0.0, 0.5, 1.0]).unwrap()
),
Err(LabelError::EmptyName)
);Sourcepub fn name(&self) -> &String
pub fn name(&self) -> &String
Returns label name.
§Examples
let name = String::from("a");
let label = Label::new(
name.clone(),
Trapezoidal::new(vec![0.0, 0.5, 1.0]).unwrap()
).unwrap();
assert_eq!(*label.name(), name);Sourcepub fn membership(&self) -> &T
pub fn membership(&self) -> &T
Returns label membership.
§Examples
let membership = Trapezoidal::new(vec![0.0, 0.5, 1.0]).unwrap();
let label = Label::new(
String::from("a"),
membership
).unwrap();
assert_eq!(format!("{}", *label.membership()), "(0.00, 0.50, 1.00)");Trait Implementations§
Source§impl From<&Label<Trapezoidal>> for PiecewiseLinearFunction
Generates a PiecewiseLinearFunction from a trapezoidal label.
impl From<&Label<Trapezoidal>> for PiecewiseLinearFunction
Generates a PiecewiseLinearFunction from a trapezoidal label.
§Examples
let labels = trapezoidal_labels![
"a" => vec![0.0, 0.1, 0.2, 0.3],
"b" => vec![0.0, 0.1, 0.1, 0.2],
"c" => vec![0.0, 0.1, 0.2]
].unwrap();
assert_eq!(format!("{}", PiecewiseLinearFunction::from(&labels[0])), "([0.00, 0.10] => y = 10.00·x + 0.00); ([0.10, 0.20] => y = 0.00·x + 1.00); ([0.20, 0.30] => y = -10.00·x + 3.00)");
assert_eq!(format!("{}", PiecewiseLinearFunction::from(&labels[1])), "([0.00, 0.10] => y = 10.00·x + 0.00); ([0.10, 0.20] => y = -10.00·x + 2.00)");
assert_eq!(format!("{}", PiecewiseLinearFunction::from(&labels[2])), "([0.00, 0.10] => y = 10.00·x + 0.00); ([0.10, 0.20] => y = -10.00·x + 2.00)");Source§fn from(l: &Label<Trapezoidal>) -> Self
fn from(l: &Label<Trapezoidal>) -> Self
Converts to this type from the input type.
impl<T: LabelMembership> StructuralPartialEq for Label<T>
Auto Trait Implementations§
impl<T> Freeze for Label<T>where
T: Freeze,
impl<T> RefUnwindSafe for Label<T>where
T: RefUnwindSafe,
impl<T> Send for Label<T>where
T: Send,
impl<T> Sync for Label<T>where
T: Sync,
impl<T> Unpin for Label<T>where
T: Unpin,
impl<T> UnsafeUnpin for Label<T>where
T: UnsafeUnpin,
impl<T> UnwindSafe for Label<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more