You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: types.rs
    path of file: ./repos/rust/tensorflow-sys-runtime/src
    
    the code of the file until where you have to start completion: /* automatically generated by rust-bindgen 0.59.2 */

pub type __uint8_t = ::std::os::raw::c_uchar;
pub type __uint32_t = ::std::os::raw::c_uint;
pub type __int64_t = ::std::os::raw::c_long;
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum TF_AttrType {
    TF_ATTR_STRING = 0,
    TF_ATTR_INT = 1,
    TF_ATTR_FLOAT = 2,
    TF_ATTR_BOOL = 3,
    TF_ATTR_TYPE = 4,
    TF_ATTR_SHAPE = 5,
    TF_ATTR_TENSOR = 6,
    TF_ATTR_PLACEHOLDER = 7,
    TF_ATTR_FUNC = 8,
}
impl TF_DataType {
    pub const TF_COMPLEX: TF_DataType = TF_DataType::TF_COMPLEX64;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum TF_DataType {
    TF_FLOAT = 1,
    TF_DOUBLE = 2,
    TF_INT32 = 3,
    TF_UINT8 = 4,
    TF_INT16 = 5,
    TF_INT8 = 6,
    TF_STRING = 7,
    TF_COMPLEX64 = 8,
    TF_INT64 = 9,
    TF_BOOL = 10,
    TF_QINT8 = 11,
    TF_QUINT8 = 12,
    TF_QINT32 = 13,
    TF_BFLOAT16 = 14,
    TF_QINT16 = 15,
    TF_QUINT16 = 16,
    TF_UINT16 = 17,
    TF_COMPLEX128 = 18,
    TF_HALF = 19,
    TF_RESOURCE = 20,
    TF_VARIANT = 21,
    TF_UINT32 = 22,
    TF_UINT64 = 23,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct TF_Status {
    _unused: [u8; 0],
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum TF_Code {
    TF_OK = 0,
    TF_CANCELLED = 1,
    TF_UNKNOWN = 2,
    TF_INVALID_ARGUMENT = 3,
    TF_DEADLINE_EXCEEDED = 4,
    TF_NOT_FOUND = 5,
    TF_ALREADY_EXISTS = 6,
    TF_PERMISSION_DENIED = 7,
    TF_UNAUTHENTICATED = 16,
    TF_RESOURCE_EXHAUSTED = 8,
    TF_FAILED_PRECONDITION = 9,
    TF_ABORTED = 10,
    TF_OUT_OF_RANGE = 11,
    TF_UNIMPLEMENTED = 12,
    TF_INTERNAL = 13,
    TF_UNAVAILABLE = 14,
    TF_DATA_LOSS = 15,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct TF_AllocatorAttributes {
    pub struct_size: usize,
    pub on_host: ::std::os::raw::c_uchar,
}
#[test]
fn bindgen_test_layout_
    
fn bindgen_test_layout_TF_WhileParams() {
    assert_eq!(
        ::std::mem::size_of::<TF_WhileParams>(),
        72usize,
        concat!("Size of: ", stringify!(TF_WhileParams))
    );
    assert_eq!(
        ::std::mem::align_of::<TF_WhileParams>(),
        8usize,
        concat!("Alignment of ", stringify!(TF_WhileParams))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<TF_WhileParams>())).ninputs as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(TF_WhileParams),
            "::",
            stringify!(ninputs)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<TF_WhileParams>())).cond_graph as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(TF_WhileParams),
            "::",
            stringify!(cond_graph)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<TF_WhileParams>())).cond_inputs as *const _ as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(TF_WhileParams),
            "::",
            stringify!(cond_inputs)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<TF_WhileParams>())).cond_output as *const _ as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(TF_WhileParams),
            "::",
            stringify!(cond_output)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<TF_WhileParams>())).body_graph as *const _ as usize },
        40usize,
        concat!(
            "Offset of field: ",
            stringify!(TF_WhileParams),
            "::",
            stringify!(body_graph)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<TF_WhileParams>())).body_inputs as *const _ as usize },
        48usize,
        concat!(
            "Offset of field: ",
            stringify!(TF_WhileParams),
            "::",
            stringify!(body_inputs)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<TF_WhileParams>())).body_outputs as *const _ as usize },
        56usize,
        concat!(
            "Offset of field: ",
            stringify!(TF_WhileParams),
            "::",
            stringify!(body_outputs)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<TF_WhileParams>())).name as *const _ as usize },
        64usize,
        concat!(
            "Offset of field: ",
            stringify!(TF_WhileParams),
            "::",
            stringify!(name)
        )
    );
}