Skip to main content

IntegerDataType

Struct IntegerDataType 

Source
pub struct IntegerDataType {
    pub size: IntegerSize,
    pub unsigned: bool,
}
Expand description

Integer data type supporting signed/unsigned variants.

Most databases only support signed integers. ClickHouse is the exception, supporting unsigned variants via UInt8, UInt16, UInt32, UInt64. Other dialect plugins will map unsigned types to the next larger signed type when unsigned is not supported.

§Example

use razeri_plugin_contract::{DataType, data_type::{IntegerDataType, IntegerSize}};

// Signed 4-byte integer (INT/INTEGER on most platforms)
let _id = DataType::int();

// Unsigned 8-byte integer (UInt64 in ClickHouse, BIGINT elsewhere)
let big = IntegerDataType::unsigned(IntegerSize::Big);
assert_eq!(big.byte_size(), 8);

Fields§

§size: IntegerSize

Size of the integer (Tiny, Small, Standard, Big).

§unsigned: bool

Whether the integer is unsigned.

Only ClickHouse fully supports unsigned integers. Other dialect plugins will map unsigned types to the next larger signed type when unsigned is not supported by the target platform.

§Example

use razeri_plugin_contract::data_type::{IntegerDataType, IntegerSize};

let signed = IntegerDataType::new(IntegerSize::Standard);
assert!(!signed.unsigned);

let unsigned = IntegerDataType::unsigned(IntegerSize::Big);
assert!(unsigned.unsigned);

Implementations§

Source§

impl IntegerDataType

Source

pub fn new(size: IntegerSize) -> Self

Creates a new signed integer with the given IntegerSize.

§Example
use razeri_plugin_contract::data_type::{IntegerDataType, IntegerSize};

let small = IntegerDataType::new(IntegerSize::Small);
assert_eq!(small.byte_size(), 2);
Source

pub fn unsigned(size: IntegerSize) -> Self

Creates a new unsigned integer with the given IntegerSize.

§Example
use razeri_plugin_contract::data_type::{IntegerDataType, IntegerSize};

let unsigned_big = IntegerDataType::unsigned(IntegerSize::Big);
assert!(unsigned_big.unsigned);
assert_eq!(unsigned_big.byte_size(), 8);
Source

pub fn byte_size(&self) -> usize

Returns the byte size of this integer type.

§Example
use razeri_plugin_contract::data_type::{IntegerDataType, IntegerSize};

assert_eq!(IntegerDataType::new(IntegerSize::Tiny).byte_size(), 1);
assert_eq!(IntegerDataType::new(IntegerSize::Small).byte_size(), 2);
assert_eq!(IntegerDataType::new(IntegerSize::Standard).byte_size(), 4);
assert_eq!(IntegerDataType::new(IntegerSize::Big).byte_size(), 8);

Trait Implementations§

Source§

impl Clone for IntegerDataType

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for IntegerDataType

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for IntegerDataType

Source§

impl Hash for IntegerDataType

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for IntegerDataType

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for IntegerDataType

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.