// WARNING: This file is machine generated by fidlgen.

#![allow(
	deprecated, // FIDL Impl struct pattern is referenced internally
	unused_parens, // one-element-tuple-case is not a tuple
	unused_mut, // not all args require mutation, but many do
	nonstandard_style, // auto-caps does its best, but is not always successful
)]
#![recursion_limit = "512"]

#[cfg(target_os = "fuchsia")]
#[allow(unused_imports)]
use fuchsia_zircon as zx;

#[allow(unused_imports)]
use {
    bitflags::bitflags,
    fidl::{
        client::{decode_transaction_body_fut, QueryResponseFut},
        encoding::{Decodable as _, Encodable as _},
        fidl_empty_struct, fidl_flexible_bits, fidl_flexible_enum, fidl_strict_bits,
        fidl_strict_enum, fidl_struct, fidl_struct_copy, fidl_table, fidl_xunion,
        wrap_handle_metadata,
    },
    fuchsia_zircon_status as zx_status,
    futures::future::{self, MaybeDone, TryFutureExt},
};

#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub struct ByteAndBytes {
    pub single_byte: u8,
    pub many_bytes: Vec<u8>,
    pub only_one_k_bytes: Vec<u8>,
    pub opt_only_one_k_bytes: Option<Vec<u8>>,
}

fidl_struct! {
  name: ByteAndBytes,
  members: [
    single_byte {
      ty: u8,
      offset_v1: 0,
    },
    many_bytes {
      ty: Vec<u8>,
      offset_v1: 8,
    },
    only_one_k_bytes {
      ty: Vec<u8>,
      offset_v1: 24,
    },
    opt_only_one_k_bytes {
      ty: Option<Vec<u8>>,
      offset_v1: 40,
    },
  ],
  padding: [
  {
      ty: u64,
      offset: 0,
      mask: 0xffffffffffffff00u64,
  },],
  size_v1: 56,
  align_v1: 8,
}
