Docs Menu
Docs Home
/ / /
Rust Driver

What's New

On this page

  • What's New in 3.1
  • What's New in 3.0.1
  • What's New in 3.0
  • What's New in 2.8
  • What's New in 2.7
  • What's New in 2.6

Learn about new features, improvements, and fixes introduced in the following versions of the MongoDB Rust Driver:

  • Version 3.1

  • Version 3.0.1

  • Version 3.0

  • Version 2.8

  • Version 2.7

  • Version 2.6

The Rust driver v3.1 release includes the following features, improvements, and fixes:

  • Adds support for more than one Key Management Service (KMS) provider of the same type. To learn more about KMS providers, see Queryable Encryption in the MongoDB Server manual.

  • Adds support for v2 of the Queryable Encryption range protocol. Range indexes for Queryable Encryption are now GA.

  • Adds support for the type field when creating indexes. To learn more about creating indexes, see Indexes in the MongoDB Server manual.

  • Implements the Happy Eyeballs algorithm for managing TCP connections. To learn more about this algorithm, see the Rust documentation for the happy_eyeballs crate.

  • The driver publishes a TopologyDescriptionChangedEvent event when a topology closes.

To learn more about this release, see the v3.1 Release Notes on GitHub.

The Rust driver v3.0.1 release includes the following features, improvements, and fixes:

  • Fixes an issue in which aggregations wouldn't compile when run within explicit sessions and also implemented custom types.

  • Fixes an issue in which the Collection::watch() method didn't use the type parameter of the Collection instance it was run on.

To learn more about this release, see the v3.0.1 Release Notes on GitHub.

The Rust driver v3.0 release includes the following features, improvements, and fixes:

  • Implements a fluent API, which introduces the following syntax changes for passing options and starting sessions:

    • To set asynchronous method options, chain option builder methods directly to the method call instead of passing an options struct parameter.

    • To set synchronous method options, chain option builder methods to the method call, then call the run() method.

    • If you must construct a separate options struct, chain the with_options() method to the method call and pass your options struct as a parameter.

    • To start a session, chain the session() method to the method call instead of using a separate method that has a _with_session suffix.

  • Adds support for bulk write operations. To learn more about these operations, see the Bulk Operations guide.

  • Introduces the EventHandler type to reduce the amount of boilerplate code required for event monitoring. For examples that use the EventHandler type, see the Monitoring guides.

  • Removes support for the async-std asynchronous runtime. To learn more about this change, see the Configure the Asynchronous Runtime section of the Asynchronous and Synchronous APIs guide.

  • Requires the use of a compat feature if a Rust driver application is compiled with the no-default-features command line flag. The rustls and dns-resolution features are now optional.

  • Removes support for the bson-* driver features. You can select these features by including bson as a direct dependency in your application.

  • Removes support for read and write concern constants. Instead, use helper methods to set ReadConcern and WriteConcern values.

  • Adds Send + Sync constraints to the Collection<T> type.

  • Removes the ClientOptions::compressor field if no compressor features are enabled.

  • Changes the type of ReadPreferenceOptions fields. These fields now have a Option<ReadPreferenceOptions> type.

  • Removes the CollectionOptions::human_readable_serialization option. Instead, use the bson::HumanReadable wrapper type to serialize user data into human-readable form.

  • Adds support for value conversion through the Into trait for all option struct builders.

  • Renames the comment_bson field to comment for AggregateOptions, FindOptions, and FindOneOptions structs.

To learn more about this release, see the v3.0 Migration Guide on GitHub.

The Rust driver v2.8 release includes the following features, improvements, and fixes:

  • Adds MongoDB Atlas Search index management methods. To learn more about these methods, see the Atlas Search Indexes guide.

  • Improves network connectivity and operation reliability by implementing the following behaviors:

    • Performs retries on a greater range of error types that the driver encounters.

    • Avoids retries for mongos instances experiencing network connectivity issues.

To learn more about this release, see the v2.8.0 Release Highlights on GitHub.

The Rust driver v2.7 release includes the following features, improvements, and fixes:

  • Adds the human_readable_serialization option to the CollectionOptions struct. This option instructs the driver to serialize values passed to CRUD methods as a human-readable format. The default value of this option is false.

    Warning

    If you set the value of human_readable_serialization to true, your insert operations might run more slowly.

  • Adds the run_cursor_command() method to run a database command and retrieve the response as a Cursor type. To learn more, see the Run a Command guide.

  • Adds SDAM event logging when you use the tracing-unstable feature flag.

  • Adds the following configurations for Client and connection management:

    • max_connecting: an option that you can set in a ClientOptions struct to specify how many connections you can establish in parallel. To learn more about this option, see Connection Pool in the Performance Considerations guide.

    • Client::warm_connection_pool(): a method that you can use to create new connections in the connection pool to provide more predictable performance. When you use this method, the driver attempts to create connections up to the number specified in the min_pool_size setting.

    • Client::shutdown(): a method that you can use to stop background tasks and wait for handlers to drop. This method can be helpful if you use event handlers to reference external resources, as these handlers might be used in tasks even after the Client is closed.

To learn more about this release, see the v2.7.0 Release Highlights on GitHub.

The Rust driver v2.6 release includes the following features, improvements, and fixes:

  • Supports AWS Identity and Access Management (IAM) roles for service accounts, such as Elastic Kubernetes Service (EKS) accounts.

  • Supports GCP-attached service accounts when using the Cloud Key Management System (KMS).

  • Supports fetching on-demand CSFLE credentials from the Azure KMS.

  • Implements the FromStr trait for the Namespace struct. This change allows you to parse a string that includes a database and collection name, such as "testdb.testcollection" into a Namespace instance.

  • Includes the server_id in a ConnectionInfo struct as an i64 type.

  • Removes most type constraints on values referenced by a Cursor.

  • Updates the libmongocrypt version in the driver dependencies in order to use the Queryable Encryption feature with equality queries.

To learn more about this release, see the v2.6.0 Release Highlights on GitHub.

Back

Quick Reference