ScyllaDB University Live | Free Virtual Training Event
Learn more
ScyllaDB Documentation Logo Documentation
  • Deployments
    • Cloud
    • Server
  • Tools
    • ScyllaDB Manager
    • ScyllaDB Monitoring Stack
    • ScyllaDB Operator
  • Drivers
    • CQL Drivers
    • DynamoDB Drivers
    • Supported Driver Versions
  • Resources
    • ScyllaDB University
    • Community Forum
    • Tutorials
Install
Search Ask AI
ScyllaDB Docs ScyllaDB Rust Driver Data Types
For AI agents: a documentation index is available at https://rust-driver.docs.scylladb.com/main/llms.txt. A Markdown version of this page is at https://rust-driver.docs.scylladb.com/main/data-types/data-types.md.

Caution

You're viewing documentation for an unstable version of ScyllaDB Rust Driver. Switch to the latest stable version.

Data Types¶

The driver maps database data types to matching Rust types to achieve seamless sending and receiving of CQL values.

See the following chapters for examples on how to send and receive each data type. Please note that using some of those types requires enabling respective feature flags. Details are available in chapters for such data types.

See Statement values for more information about sending values along with statements.

See Query result for more information about retrieving values from queries.

Database types and their Rust equivalents:

  • Boolean <—-> bool

  • Tinyint <—-> i8

  • Smallint <—-> i16

  • Int <—-> i32

  • BigInt <—-> i64

  • Float <—-> f32

  • Double <—-> f64

  • Ascii, Text, Varchar <—-> &str, String, Box<str>, Arc<str>

  • Counter <—-> value::Counter

  • Blob <—-> &[u8], Vec<u8>, Bytes, (and [u8; N] for serialization only)

  • Inet <—-> std::net::IpAddr

  • Uuid <—-> uuid::Uuid

  • Timeuuid <—-> value::CqlTimeuuid

  • Date <—-> value::CqlDate, chrono::NaiveDate, time::Date

  • Time <—-> value::CqlTime, chrono::NaiveTime, time::Time

  • Timestamp <—-> value::CqlTimestamp, chrono::DateTime<Utc>, time::OffsetDateTime

  • Duration <—-> value::CqlDuration

  • Decimal <—-> value::CqlDecimal, value::CqlDecimalBorrowed, bigdecimal::BigDecimal

  • Varint <—-> value::CqlVarint, value::CqlVarintBorrowed, num_bigint::BigInt (v0.3 and v0.4)

  • List <—-> Vec<T>

  • Set <—-> Vec<T>

  • Map <—-> std::collections::HashMap<K, V>

  • Tuple <—-> Rust tuples

  • UDT (User defined type) <—-> Custom user structs with macros

  • Vector <—-> Vec<T>

Additionally, Box, Arc, and Cow serialization and deserialization is supported for all above types.

Using the value types with serde¶

The value::* types above are plain data, so they can be embedded in your own structures that are serialized with serde - to a cache, a message queue, a config file, etc. Enabling the serde feature of the driver derives serde’s Serialize and Deserialize for value::Counter, value::CqlDate, value::CqlDecimal, value::CqlDuration, value::CqlTime, value::CqlTimestamp, value::CqlTimeuuid, value::CqlVarint and the borrowed decimal/varint variants.

Note that this is unrelated to how values are represented on the wire - the CQL binary format is always used when talking to the database.

The serde representations of these types are not covered by the driver’s semver guarantees - they may change between driver versions. Any such change is announced in the release notes, so if you persist these values, check the release notes before upgrading.

Was this page helpful?

PREVIOUS
Remapping execution profile handles
NEXT
Bool, Tinyint, Smallint, Int, Bigint, Float, Double
  • Create an issue
  • Edit this page

On this page

  • Data Types
    • Using the value types with serde
ScyllaDB Rust Driver
Search Ask AI
  • main
    • main
    • v1.9.0
    • v1.8.0
    • v1.7.0
    • v1.6.0
    • v1.5.0
    • v1.4.1
    • v1.4.0
    • v1.3.1
    • v1.3.0
    • v1.2.0
  • ScyllaDB Rust Driver
  • Quick Start
    • Creating a project
    • Connecting and running a simple query
    • Running ScyllaDB using Docker
  • Connecting to the cluster
    • Compression
    • Authentication
    • TLS
    • Client Routes (ScyllaDB Cloud Private Connectivity)
  • Executing CQL statements - best practices
    • Unprepared statement
    • Statement values
    • Query result
    • Prepared statement
    • Bound statement
    • Batch statement
    • Paged query
    • USE keyspace
    • Schema agreement
    • Lightweight transaction (LWT) statement
    • Request timeouts
    • Timestamp generators
  • Execution profiles
    • Creating a profile and setting it
    • All options supported by a profile
    • Priorities of execution settings
    • Remapping execution profile handles
  • Data Types
    • Bool, Tinyint, Smallint, Int, Bigint, Float, Double
    • Ascii, Text, Varchar
    • Counter
    • Blob
    • Inet
    • Uuid
    • Timeuuid
    • Date
    • Time
    • Timestamp
    • Duration
    • Decimal
    • Varint
    • List, Set, Map
    • Tuple
    • User defined types
    • Vector
  • Load balancing
    • DefaultPolicy
    • Tablet awareness
  • Retry policy configuration
    • Fallthrough retry policy
    • Default retry policy
    • Downgrading consistency retry policy
  • Speculative execution
    • Simple speculative execution
    • Percentile speculative execution
  • Driver metrics
  • Migration guides
    • Adjusting code to changes in serialization API introduced in 0.11
    • Adjusting code to changes in deserialization API introduced in 0.15
  • Logging
  • Query tracing
    • Tracing a simple/prepared/batch query
    • Tracing a paged query
    • Tracing Session::prepare
    • Query Execution History
  • Schema
Docs Tutorials University Contact Us About Us
© 2026, ScyllaDB. All rights reserved. | Terms of Service | Privacy Policy | ScyllaDB, and ScyllaDB Cloud, are registered trademarks of ScyllaDB, Inc.
Last updated on 10 October 2026.
Powered by Sphinx 9.1.0 & ScyllaDB Theme 1.9.3