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: IntegerSizeSize of the integer (Tiny, Small, Standard, Big).
unsigned: boolWhether 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
impl IntegerDataType
Sourcepub fn new(size: IntegerSize) -> Self
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);Sourcepub fn unsigned(size: IntegerSize) -> Self
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);Sourcepub fn byte_size(&self) -> usize
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
impl Clone for IntegerDataType
Source§impl Debug for IntegerDataType
impl Debug for IntegerDataType
impl Eq for IntegerDataType
Source§impl Hash for IntegerDataType
impl Hash for IntegerDataType
Source§impl PartialEq for IntegerDataType
impl PartialEq for IntegerDataType
impl StructuralPartialEq for IntegerDataType
Auto Trait Implementations§
impl Forget for IntegerDataType
impl Freeze for IntegerDataType
impl Move for IntegerDataType
impl RefUnwindSafe for IntegerDataType
impl Send for IntegerDataType
impl Sync for IntegerDataType
impl Unpin for IntegerDataType
impl UnsafeUnpin for IntegerDataType
impl UnwindSafe for IntegerDataType
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more