#![crate_name = "scaproust"]
#![doc(html_root_url = "https://blabaere.github.io/scaproust/")]
#![cfg_attr(feature = "cargo-clippy", allow(boxed_local))]
#![cfg_attr(feature = "cargo-clippy", allow(bool_comparison))]
#![cfg_attr(feature = "cargo-clippy", allow(len_without_is_empty))]
#[macro_use]
extern crate log;
extern crate time;
extern crate byteorder;
extern crate mio;
extern crate mio_uds;
extern crate mio_extras;
extern crate iovec;
#[cfg(windows)]
extern crate mio_named_pipes;
#[cfg(windows)]
extern crate winapi;
pub mod core;
pub mod proto;
pub mod transport;
#[doc(hidden)]
mod reactor;
#[doc(hidden)]
mod facade;
#[doc(hidden)]
mod sequence;
#[doc(hidden)]
mod io_error;
pub use facade::session::SessionBuilder;
pub use facade::session::Session;
pub use facade::socket::Socket;
pub use facade::device::Device;
pub use facade::probe::Probe;
pub use facade::endpoint::Endpoint;
pub use core::Message;
pub use core::PollReq;
pub use core::PollRes;
pub use core::config::ConfigOption;
pub use transport::tcp::Tcp;
pub use transport::ipc::Ipc;
pub use proto::pair::Pair;
pub use proto::publ::Pub;
pub use proto::sub::Sub;
pub use proto::req::Req;
pub use proto::rep::Rep;
pub use proto::push::Push;
pub use proto::pull::Pull;
pub use proto::surv::Surveyor;
pub use proto::resp::Respondent;
pub use proto::bus::Bus;
#[cfg(test)]
mod tests {
struct Editable {
x: usize
}
struct Editor {
y: usize
}
struct Outter {
editable: Editable,
editor: Editor
}
impl Editable {
fn edit(&mut self) { self.x += 1; }
}
impl Editor {
fn edit(&mut self, editable: &mut Editable) {
self.y += 1;
editable.edit();
}
}
impl Outter {
fn test(&mut self) {
self.editor.edit(&mut self.editable);
}
}
#[test]
fn can_pass_mutable_field_ref_to_other_field() {
let mut master = Outter {
editable: Editable { x: 0 },
editor: Editor { y: 0 },
};
master.test();
}
}