[][src]Struct swarm_it::Slot

pub struct Slot<T: PartialEq + Eq + Hash + Copy> { /* fields omitted */ }

Represnets the Slot object. Slots have their target payload specified and carriers will do their best to find appropriate payload and bring it to the slot.

Methods

impl<T: PartialEq + Eq + Hash + Copy> Slot<T>[src]

pub fn new(
    x: f64,
    y: f64,
    current_payload: Option<Payload<T>>,
    target_payload: Option<Payload<T>>,
    kind: SlotKind
) -> Slot<T>
[src]

Creates new Slot at the position specified and with the payloads specified

Example

let empty_slot = swarm_it::Slot::<char>::new(100.0, 100.0, None, None, swarm_it::SlotKind::CLASSIC);
let slot_with_current_payload = swarm_it::Slot::<char>::new(
    100.0, 100.0,
    Some(swarm_it::Payload::new('X')),
    None,
    swarm_it::SlotKind::CLASSIC);

pub fn get_position(&self) -> &Position[src]

Returns current slot position

Example

let x = 100.0;
let y = 200.0;
let slot = swarm_it::Slot::<char>::new(x, y, None, None, swarm_it::SlotKind::CLASSIC);
let position = slot.get_position();
approx::assert_abs_diff_eq!(position.x, x);
approx::assert_abs_diff_eq!(position.y, y);

pub fn get_payloads(&self) -> [Option<Payload<T>>; 2][src]

Returns current carrier payloads.

IndexContent
0current payload
1target payload

Example

let slot_with_current_payload = swarm_it::Slot::<char>::new(
    100.0, 100.0,
    Some(swarm_it::Payload::new('X')),
    None,
    swarm_it::SlotKind::CLASSIC);
let payloads = slot_with_current_payload.get_payloads();
assert_eq!(payloads[0], Some(swarm_it::Payload::new('X')));
assert_eq!(payloads[1], None);

pub fn set_target_payload(&mut self, p: Option<Payload<T>>)[src]

Sets target payload

Example

let mut empty_slot = swarm_it::Slot::<char>::new(100.0, 100.0, None, None, swarm_it::SlotKind::CLASSIC);
empty_slot.set_target_payload(Some(swarm_it::Payload::new('X')));
let payloads = empty_slot.get_payloads();
assert_eq!(payloads[0], None);
assert_eq!(payloads[1], Some(swarm_it::Payload::new('X')));

pub fn set_payloads(&mut self, p: Option<Payload<T>>)[src]

Sets both current and target payloads

Example

let mut empty_slot = swarm_it::Slot::<char>::new(100.0, 100.0, None, None, swarm_it::SlotKind::CLASSIC);
empty_slot.set_payloads(Some(swarm_it::Payload::new('X')));
let payloads = empty_slot.get_payloads();
assert_eq!(payloads[0], Some(swarm_it::Payload::new('X')));
assert_eq!(payloads[1], Some(swarm_it::Payload::new('X')));

pub fn is_taken_care_of(&self) -> bool[src]

Returns true if this slot is already addressed by any of the carriers. It is mainly used by the library internals, but is also exposed for the user, so it is possible to, for example, prepare different visualization for these kind of slots.

Example

let slot = swarm_it::Slot::<char>::new(100.0, 100.0, None, None, swarm_it::SlotKind::CLASSIC);
assert_eq!(slot.is_taken_care_of(), false);

pub fn is_pit(&self) -> bool[src]

Returns true is slot is a pit

Example

let slot_classic = swarm_it::Slot::<char>::new(100.0, 100.0, None, None, swarm_it::SlotKind::CLASSIC);
let slot_pit = swarm_it::Slot::<char>::new(100.0, 100.0, None, None, swarm_it::SlotKind::PIT);
let slot_spawner = swarm_it::Slot::<char>::new(100.0, 100.0, None, None, swarm_it::SlotKind::SPAWNER);
assert!(slot_pit.is_pit());
assert!(!slot_classic.is_pit());
assert!(!slot_spawner.is_pit());

pub fn is_spawner(&self) -> bool[src]

Returns true is slot is a spawner

Example

let slot_classic = swarm_it::Slot::<char>::new(100.0, 100.0, None, None, swarm_it::SlotKind::CLASSIC);
let slot_pit = swarm_it::Slot::<char>::new(100.0, 100.0, None, None, swarm_it::SlotKind::PIT);
let slot_spawner = swarm_it::Slot::<char>::new(100.0, 100.0, None, None, swarm_it::SlotKind::SPAWNER);
assert!(!slot_pit.is_spawner());
assert!(!slot_classic.is_spawner());
assert!(slot_spawner.is_spawner());

Trait Implementations

impl<T: Clone + PartialEq + Eq + Hash + Copy> Clone for Slot<T>[src]

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl<T: Copy + PartialEq + Eq + Hash> Copy for Slot<T>[src]

impl<T: Debug + PartialEq + Eq + Hash + Copy> Debug for Slot<T>[src]

Auto Trait Implementations

impl<T> Sync for Slot<T> where
    T: Sync

impl<T> Send for Slot<T> where
    T: Send

impl<T> Unpin for Slot<T> where
    T: Unpin

impl<T> RefUnwindSafe for Slot<T> where
    T: RefUnwindSafe

impl<T> UnwindSafe for Slot<T> where
    T: UnwindSafe

Blanket Implementations

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,