lsl 0.1.1

Lab streaming layer (liblsl) bindings for rust.
Documentation
/** Example program to demonstrate how to read string-valued markers from LSL.*/
use lsl;
use lsl::Pullable; // trait that provides the pull_sample method

fn main() -> Result<(), lsl::Error> {
    // first we resolve a stream with content type Markers
    println!("Resolving Marker stream...");
    let res = lsl::resolve_byprop("type", "Markers", 1, lsl::FOREVER)?;

    // next we create an inlet to read from the stream, using the default parameter
    let inl = lsl::StreamInlet::new(&res[0], 360, 0, true)?;

    println!("Reading data...");
    loop {
        // get the next successive event marker that was sent and its time stamp (here: blocking)
        // in theory the stream could be multi-channel (multiple strings per sample), which is why
        // a vector is returned -- though for marker streams there's nearly always only 1 channel
        let (sample, ts): (Vec<String>, _) = inl.pull_sample(lsl::FOREVER)?;
        // (the type hint ^ is needed since you could also pull into a Vec<Vec<u8>> for example)
        println!("got {:?} at time {}", sample, ts);
    }
}