O'Reilly logo

Network Programming with Rust by Abhishek Chanda

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Parsing binary data

A related problem is that of parsing binary data. Common cases where this is applicable include parsing binary files and binary protocols. Let us look at how nom can be used to parse binary data. In our toy example, we will write a parser for the IPv6 header. Our Cargo.toml will look exactly the same as last time. Set up the project using the CLI:

$ cargo new --bin nom-ipv6

Our main file will look like this:

// chapter4/nom-ipv6/src/main.rs#[macro_use]extern crate nom;use std::net::Ipv6Addr;use nom::IResult;// Struct representing an IPv6 header#[derive(Debug, PartialEq, Eq)]pub struct IPv6Header {    version: u8,    traffic_class: u8,    flow_label: u32,    payload_length: u16,    next_header: u8,    hop_limit: u8, source_addr: Ipv6Addr, ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required