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: value.rs
    path of file: ./repos/rdms/src/dbs
    
    the code of the file until where you have to start completion: use cbordata::Cborize;

use crate::{dbs::Footprint, Error, Result};

/// This value must change only when the shape of Value type changes. High 16-bits
/// identify the type and lower 16-bits identify the version.
pub const VALUE_VER: u32 = 0x00020001;

/// Value type, describe the value part of each entry withing a indexed data-set
#[derive(Clone, Debug, Eq, Part
    
    fn footprint(&self) -> Result<isize> {
        use std::{convert::TryFrom, mem::size_of};

        let mut size = {
            err_at!(FailConvert, isize::try_from(size_of::<Value<V>>()))?
                - err_at!(FailConvert, isize::try_from(size_of::<V>()))?
        };

        size += match self {
            Value::U { value, .. } => value.footprint()?,
            Value::D { .. } => 0,
        };

        Ok(size)
    }