This is an automated email from the ASF dual-hosted git repository.
Kriskras99 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/avro-rs.git
The following commit(s) were added to refs/heads/main by this push:
new 4992715 feat!: Remove most deprecated items and improve the
documentation (#734)
4992715 is described below
commit 4992715148f0d559b1143724cb4a39cf29ee2255
Author: Kriskras99 <[email protected]>
AuthorDate: Tue Nov 10 17:39:49 2026 +0100
feat!: Remove most deprecated items and improve the documentation (#734)
---
avro/src/bytes.rs | 223 --------------------------------------
avro/src/codec.rs | 3 +
avro/src/decimal.rs | 1 +
avro/src/documentation/dynamic.rs | 17 +--
avro/src/documentation/primer.rs | 6 +-
avro/src/duration.rs | 6 +-
avro/src/error.rs | 27 +----
avro/src/lib.rs | 97 +++++------------
avro/src/reader/datum.rs | 95 ----------------
avro/src/reader/single_object.rs | 6 +
avro/src/schema/mod.rs | 12 --
avro/src/serde/de.rs | 2 +-
avro/src/serde/ser.rs | 2 +-
avro/src/types.rs | 2 +-
avro/src/writer/datum.rs | 49 ---------
avro/src/writer/mod.rs | 6 -
avro/src/writer/single_object.rs | 16 +--
avro/tests/append_to_existing.rs | 3 +-
18 files changed, 58 insertions(+), 515 deletions(-)
diff --git a/avro/src/bytes.rs b/avro/src/bytes.rs
deleted file mode 100644
index c61f124..0000000
--- a/avro/src/bytes.rs
+++ /dev/null
@@ -1,223 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-//! Deprecated. Use [`apache_avro::serde`] instead.
-//!
-//! [`apache_avro::serde`](crate::serde)
-
-#[cfg(doc)]
-use crate as apache_avro;
-
-/// Deprecated. Use [`apache_avro::serde::bytes`] instead.
-#[deprecated(since = "0.22.0", note = "Use `apache_avro::serde::bytes`
instead")]
-pub mod serde_avro_bytes {
- #[cfg(doc)]
- use crate as apache_avro;
- use serde::{Deserializer, Serializer};
-
- /// Deprecated. Use [`apache_avro::serde::bytes::serialize`] instead.
- #[deprecated(
- since = "0.22.0",
- note = "Use `apache_avro::serde::bytes::serialize` instead"
- )]
- pub fn serialize<S>(bytes: &[u8], serializer: S) -> Result<S::Ok, S::Error>
- where
- S: Serializer,
- {
- crate::serde::bytes::serialize(bytes, serializer)
- }
-
- /// Deprecated. Use [`apache_avro::serde::bytes::deserialize`] instead.
- #[deprecated(
- since = "0.22.0",
- note = "Use `apache_avro::serde::bytes::deserialize` instead"
- )]
- pub fn deserialize<'de, D>(deserializer: D) -> Result<Vec<u8>, D::Error>
- where
- D: Deserializer<'de>,
- {
- crate::serde::bytes::deserialize(deserializer)
- }
-}
-
-/// Deprecated. Use [`apache_avro::serde::bytes_opt`] instead.
-///
-/// [`apache_avro::serde::bytes_opt`](crate::serde::bytes_opt)
-#[deprecated(since = "0.22.0", note = "Use `apache_avro::serde::bytes_opt`
instead")]
-pub mod serde_avro_bytes_opt {
- #[cfg(doc)]
- use crate as apache_avro;
- use serde::{Deserializer, Serializer};
- use std::borrow::Borrow;
-
- /// Deprecated. Use [`apache_avro::serde::bytes_opt::serialize`] instead.
- #[deprecated(
- since = "0.22.0",
- note = "Use `apache_avro::serde::bytes_opt::serialize` instead"
- )]
- pub fn serialize<S, B>(bytes: &Option<B>, serializer: S) -> Result<S::Ok,
S::Error>
- where
- S: Serializer,
- B: Borrow<[u8]> + serde_bytes::Serialize,
- {
- crate::serde::bytes_opt::serialize(bytes, serializer)
- }
-
- /// Deprecated. Use [`apache_avro::serde::bytes_opt::deserialize`] instead.
- #[deprecated(
- since = "0.22.0",
- note = "Use `apache_avro::serde::bytes_opt::deserialize` instead"
- )]
- pub fn deserialize<'de, D>(deserializer: D) -> Result<Option<Vec<u8>>,
D::Error>
- where
- D: Deserializer<'de>,
- {
- crate::serde::bytes_opt::deserialize(deserializer)
- }
-}
-
-/// Deprecated. Use [`apache_avro::serde::fixed`] instead.
-#[deprecated(since = "0.22.0", note = "Use `apache_avro::serde::fixed`
instead")]
-pub mod serde_avro_fixed {
- #[cfg(doc)]
- use crate as apache_avro;
- use serde::{Deserializer, Serializer};
-
- /// Deprecated. Use [`apache_avro::serde::fixed::serialize`] instead.
- #[deprecated(
- since = "0.22.0",
- note = "Use `apache_avro::serde::fixed::serialize` instead"
- )]
- pub fn serialize<S>(bytes: &[u8], serializer: S) -> Result<S::Ok, S::Error>
- where
- S: Serializer,
- {
- crate::serde::fixed::serialize(bytes, serializer)
- }
-
- /// Deprecated. Use [`apache_avro::serde::fixed::deserialize`] instead.
- #[deprecated(
- since = "0.22.0",
- note = "Use `apache_avro::serde::fixed::deserialize` instead"
- )]
- pub fn deserialize<'de, D, const N: usize>(deserializer: D) -> Result<[u8;
N], D::Error>
- where
- D: Deserializer<'de>,
- {
- crate::serde::fixed::deserialize(deserializer)
- }
-}
-
-/// Deprecated. Use [`apache_avro::serde::fixed_opt`] instead.
-#[deprecated(since = "0.22.0", note = "Use `apache_avro::serde::fixed_opt`
instead")]
-pub mod serde_avro_fixed_opt {
- #[cfg(doc)]
- use crate as apache_avro;
- use serde::{Deserializer, Serializer};
- use std::borrow::Borrow;
-
- /// Deprecated. Use [`apache_avro::serde::fixed_opt::serialize`] instead.
- #[deprecated(
- since = "0.22.0",
- note = "Use `apache_avro::serde::fixed_opt::serialize` instead"
- )]
- pub fn serialize<S, B>(bytes: &Option<B>, serializer: S) -> Result<S::Ok,
S::Error>
- where
- S: Serializer,
- B: Borrow<[u8]> + serde_bytes::Serialize,
- {
- crate::serde::fixed_opt::serialize(bytes, serializer)
- }
-
- /// Deprecated. Use [`apache_avro::serde::fixed_opt::deserialize`] instead.
- #[deprecated(
- since = "0.22.0",
- note = "Use `apache_avro::serde::fixed_opt::deserialize` instead"
- )]
- pub fn deserialize<'de, D, const N: usize>(deserializer: D) ->
Result<Option<[u8; N]>, D::Error>
- where
- D: Deserializer<'de>,
- {
- crate::serde::fixed_opt::deserialize(deserializer)
- }
-}
-
-/// Deprecated. Use [`apache_avro::serde::slice`] instead.
-#[deprecated(since = "0.22.0", note = "Use `apache_avro::serde::slice`
instead")]
-pub mod serde_avro_slice {
- #[cfg(doc)]
- use crate as apache_avro;
- use serde::{Deserializer, Serializer};
-
- /// Deprecated. Use [`apache_avro::serde::slice::serialize`] instead.
- #[deprecated(
- since = "0.22.0",
- note = "Use `apache_avro::serde::slice::serialize` instead"
- )]
- pub fn serialize<S>(bytes: &[u8], serializer: S) -> Result<S::Ok, S::Error>
- where
- S: Serializer,
- {
- crate::serde::slice::serialize(bytes, serializer)
- }
-
- /// Deprecated. Use [`apache_avro::serde::slice::deserialize`] instead.
- #[deprecated(
- since = "0.22.0",
- note = "Use `apache_avro::serde::slice::deserialize` instead"
- )]
- pub fn deserialize<'de, D>(deserializer: D) -> Result<&'de [u8], D::Error>
- where
- D: Deserializer<'de>,
- {
- crate::serde::slice::deserialize(deserializer)
- }
-}
-
-/// Deprecated. Use [`apache_avro::serde::slice_opt`] instead.
-#[deprecated(since = "0.22.0", note = "Use `apache_avro::serde::slice_opt`
instead")]
-pub mod serde_avro_slice_opt {
- #[cfg(doc)]
- use crate as apache_avro;
- use serde::{Deserializer, Serializer};
- use std::borrow::Borrow;
-
- /// Deprecated. Use [`apache_avro::serde::slice_opt::serialize`] instead.
- #[deprecated(
- since = "0.22.0",
- note = "Use `apache_avro::serde::slice_opt::serialize` instead"
- )]
- pub fn serialize<S, B>(bytes: &Option<B>, serializer: S) -> Result<S::Ok,
S::Error>
- where
- S: Serializer,
- B: Borrow<[u8]> + serde_bytes::Serialize,
- {
- crate::serde::slice_opt::serialize(bytes, serializer)
- }
-
- /// Deprecated. Use [`apache_avro::serde::slice_opt::deserialize`] instead.
- #[deprecated(
- since = "0.22.0",
- note = "Use `apache_avro::serde::slice_opt::deserialize` instead"
- )]
- pub fn deserialize<'de, D>(deserializer: D) -> Result<Option<&'de [u8]>,
D::Error>
- where
- D: Deserializer<'de>,
- {
- crate::serde::slice_opt::deserialize(deserializer)
- }
-}
diff --git a/avro/src/codec.rs b/avro/src/codec.rs
index 77d275e..4b9ed74 100644
--- a/avro/src/codec.rs
+++ b/avro/src/codec.rs
@@ -255,6 +255,7 @@ impl Codec {
pub mod bzip {
use bzip2::Compression;
+ /// Settings for configuring bzip2 compression.
#[derive(Clone, Copy, Eq, PartialEq, Debug)]
pub struct Bzip2Settings {
pub compression_level: u8,
@@ -279,6 +280,7 @@ pub mod bzip {
#[cfg(feature = "zstandard")]
pub mod zstandard {
+ /// Settings for configuring zstandard compression.
#[derive(Clone, Copy, Eq, PartialEq, Debug)]
pub struct ZstandardSettings {
pub compression_level: u8,
@@ -299,6 +301,7 @@ pub mod zstandard {
#[cfg(feature = "xz")]
pub mod xz {
+ /// Settings for configuring xz compression.
#[derive(Clone, Copy, Eq, PartialEq, Debug)]
pub struct XzSettings {
pub compression_level: u8,
diff --git a/avro/src/decimal.rs b/avro/src/decimal.rs
index 997cace..39c3c15 100644
--- a/avro/src/decimal.rs
+++ b/avro/src/decimal.rs
@@ -20,6 +20,7 @@ use num_bigint::{BigInt, Sign};
use serde::{Deserialize, Serialize, Serializer, de::SeqAccess};
use std::num::NonZero;
+/// A decimal as specified in the Avro specification.
#[derive(Debug, Clone, Eq)]
pub struct Decimal {
value: BigInt,
diff --git a/avro/src/documentation/dynamic.rs
b/avro/src/documentation/dynamic.rs
index a6e3088..d224148 100644
--- a/avro/src/documentation/dynamic.rs
+++ b/avro/src/documentation/dynamic.rs
@@ -228,13 +228,6 @@
//!
//! ```
//! use apache_avro::{Codec, DeflateSettings, Reader, Schema, Writer,
from_value, types::Record, Error};
-//! use serde::{Deserialize, Serialize};
-//!
-//! #[derive(Debug, Deserialize, Serialize)]
-//! struct Test {
-//! a: i64,
-//! b: String,
-//! }
//!
//! fn main() -> Result<(), Error> {
//! let raw_schema = r#"
@@ -260,18 +253,12 @@
//!
//! writer.append_value(record)?;
//!
-//! let test = Test {
-//! a: 27,
-//! b: "foo".to_owned(),
-//! };
-//!
-//! writer.append_ser(test)?;
-//!
//! let input = writer.into_inner()?;
//! let reader =
Reader::builder(&input[..]).reader_schema(&schema).build()?;
//!
//! for record in reader {
-//! println!("{:?}", from_value::<Test>(&record?));
+//! let record = record?;
+//! println!("{record:?}");
//! }
//! Ok(())
//! }
diff --git a/avro/src/documentation/primer.rs b/avro/src/documentation/primer.rs
index 2efc322..c234f6b 100644
--- a/avro/src/documentation/primer.rs
+++ b/avro/src/documentation/primer.rs
@@ -78,10 +78,8 @@
//! schema and can therefore not be decoded without the reader knowing
**exactly** which schema was
//! used to write it.
//!
-//! This file format can be used via the
[`to_avro_datum`](crate::to_avro_datum),
[`from_avro_datum`](crate::from_avro_datum),
-//! [`to_avro_datum_schemata`](crate::to_avro_datum_schemata),
[`from_avro_datum_schemata`](crate::from_avro_datum_schemata),
-//!
[`from_avro_datum_reader_schemata`](crate::from_avro_datum_reader_schemata), and
-//! [`write_avro_datum_ref`](crate::write_avro_datum_ref) functions.
+//! This file format can be used via the
[`GenericDatumWriter`](crate::writer::datum::GenericDatumWriter)
+//! and [`GenericDatumReader`](crate::reader::datum::GenericDatumReader)
functions.
//!
//! #### [Avro
JSON](https://avro.apache.org/docs/++version++/specification/#json-encoding)
//! Not be confused with the schema definition which is also in JSON. This is
the Avro data encoded
diff --git a/avro/src/duration.rs b/avro/src/duration.rs
index eecfca1..e54a9e5 100644
--- a/avro/src/duration.rs
+++ b/avro/src/duration.rs
@@ -17,8 +17,7 @@
use serde::{Deserialize, Serialize, de};
-/// A struct representing duration that hides the details of endianness and
conversion between
-/// platform-native u32 and byte arrays.
+/// A duration as specified in the Avro specification.
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub struct Duration {
months: Months,
@@ -26,6 +25,7 @@ pub struct Duration {
millis: Millis,
}
+/// The months part of a duration as specified in the Avro specification.
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub struct Months(u32);
@@ -51,6 +51,7 @@ impl From<[u8; 4]> for Months {
}
}
+/// The days part of a duration as specified in the Avro specification.
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub struct Days(u32);
@@ -76,6 +77,7 @@ impl From<[u8; 4]> for Days {
}
}
+/// The milliseconds part of a duration as specified in the Avro specification.
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub struct Millis(u32);
diff --git a/avro/src/error.rs b/avro/src/error.rs
index e7cdcd9..a7d58d1 100644
--- a/avro/src/error.rs
+++ b/avro/src/error.rs
@@ -15,6 +15,8 @@
// specific language governing permissions and limitations
// under the License.
+//! Types for dealing with errors.
+
use crate::{
schema::{Name, RecordSchema, Schema, SchemaKind, UnionSchema},
types::{Value, ValueKind},
@@ -375,10 +377,6 @@ pub enum Details {
#[error("Cannot convert u64 to usize: {1}")]
ConvertU64ToUsize(#[source] std::num::TryFromIntError, u64),
- #[deprecated(since = "0.20.0", note = "This error variant is not generated
anymore")]
- #[error("Cannot convert u32 to usize: {1}")]
- ConvertU32ToUsize(#[source] std::num::TryFromIntError, u32),
-
#[error("Cannot convert i64 to usize: {1}")]
ConvertI64ToUsize(#[source] std::num::TryFromIntError, i64),
@@ -433,20 +431,12 @@ pub enum Details {
#[error("The decimal precision ({precision}) must be a non-zero positive
number")]
DecimalPrecisionMuBePositive { precision: usize },
- #[deprecated(since = "0.20.0", note = "This error variant is not generated
anymore")]
- #[error("Unreadable big decimal sign")]
- BigDecimalSign,
-
#[error("Unreadable length for big decimal inner bytes: {0}")]
BigDecimalLen(#[source] Box<Error>),
#[error("Unreadable big decimal scale")]
BigDecimalScale,
- #[deprecated(since = "0.20.0", note = "This error variant is not generated
anymore")]
- #[error("Unexpected `type` {0} variant for `logicalType`")]
- GetLogicalTypeVariant(serde_json::Value),
-
#[error("No `type` field found for `logicalType`")]
GetLogicalTypeField,
@@ -545,19 +535,6 @@ pub enum Details {
#[error("Expected a string for the `{0}` field, got a {1}")]
GetStringInvalidType(&'static str, &'static str),
- #[deprecated(since = "0.22.0", note = "This error variant is not generated
anymore")]
- #[error("Fixed schema's default value length ({0}) does not match its size
({1})")]
- FixedDefaultLenSizeMismatch(usize, u64),
-
- #[deprecated(since = "0.20.0", note = "This error variant is not generated
anymore")]
- #[error("Failed to compress with flate: {0}")]
- DeflateCompress(#[source] std::io::Error),
-
- // no longer possible after migration from libflate to miniz_oxide
- #[deprecated(since = "0.19.0", note = "This error can no longer occur")]
- #[error("Failed to finish flate compressor: {0}")]
- DeflateCompressFinish(#[source] std::io::Error),
-
#[error("Failed to decompress with flate: {0}")]
DeflateDecompress(#[source] std::io::Error),
diff --git a/avro/src/lib.rs b/avro/src/lib.rs
index 3f50989..afe534c 100644
--- a/avro/src/lib.rs
+++ b/avro/src/lib.rs
@@ -54,7 +54,6 @@
#![cfg_attr(docsrs, allow(internal_features))]
mod bigdecimal;
-mod bytes;
mod codec;
mod decimal;
mod decode;
@@ -76,46 +75,41 @@ pub mod util;
pub mod validator;
pub mod writer;
-#[expect(deprecated)]
+// Re-export types from private module
pub use crate::{
bigdecimal::BigDecimal,
- bytes::{
- serde_avro_bytes, serde_avro_bytes_opt, serde_avro_fixed,
serde_avro_fixed_opt,
- serde_avro_slice, serde_avro_slice_opt,
- },
+ codec::{Codec, DeflateSettings},
+ decimal::Decimal,
+ duration::{Days, Duration, Millis, Months},
};
+
+// Re-export types from private modules that need to be behind feature gates
#[cfg(feature = "bzip")]
-pub use codec::bzip::Bzip2Settings;
+pub use crate::codec::bzip::Bzip2Settings;
#[cfg(feature = "xz")]
-pub use codec::xz::XzSettings;
+pub use crate::codec::xz::XzSettings;
#[cfg(feature = "zstandard")]
-pub use codec::zstandard::ZstandardSettings;
-pub use codec::{Codec, DeflateSettings};
-pub use decimal::Decimal;
-pub use duration::{Days, Duration, Millis, Months};
-pub use error::Error;
-#[expect(
- deprecated,
- reason = "Still need to export it until we remove it completely"
-)]
-pub use reader::{
- Reader,
- datum::{from_avro_datum, from_avro_datum_reader_schemata,
from_avro_datum_schemata},
- read_marker,
- single_object::{GenericSingleObjectReader, SpecificSingleObjectReader},
+pub use crate::codec::zstandard::ZstandardSettings;
+
+// Re-exports that are available at their respective paths but are made
available in the root for
+// convenience.
+#[doc(inline)]
+pub use crate::{
+ error::Error,
+ reader::{
+ Reader,
+ single_object::{GenericSingleObjectReader, SpecificSingleObjectReader},
+ },
+ schema::Schema,
+ serde::{AvroSchema, AvroSchemaComponent, from_value, to_value},
+ writer::{
+ Clearable, Writer, WriterBuilder,
+ single_object::{GenericSingleObjectWriter, SpecificSingleObjectWriter},
+ },
};
-pub use schema::Schema;
-pub use serde::{AvroSchema, AvroSchemaComponent, from_value, to_value};
+
+// Re-exports from other crates
pub use uuid::Uuid;
-#[expect(
- deprecated,
- reason = "Still need to export it until we remove it completely"
-)]
-pub use writer::{
- Clearable, Writer, WriterBuilder,
- datum::{to_avro_datum, to_avro_datum_schemata, write_avro_datum_ref},
- single_object::{GenericSingleObjectWriter, SpecificSingleObjectWriter},
-};
#[cfg(feature = "derive")]
pub use apache_avro_derive::AvroSchema;
@@ -123,43 +117,6 @@ pub use apache_avro_derive::AvroSchema;
/// A convenience type alias for `Result`s with `Error`s.
pub type AvroResult<T> = Result<T, Error>;
-/// Set the maximum number of bytes that can be allocated when decoding data.
-///
-/// This function only changes the setting once. On subsequent calls the value
will stay the same
-/// as the first time it is called. It is automatically called on first
allocation and defaults to
-/// [`util::DEFAULT_MAX_ALLOCATION_BYTES`].
-///
-/// # Returns
-/// The configured maximum, which might be different from what the function
was called with if the
-/// value was already set before.
-#[deprecated(
- since = "0.21.0",
- note = "Please use apache_avro::util::max_allocation_bytes"
-)]
-pub fn max_allocation_bytes(num_bytes: usize) -> usize {
- util::max_allocation_bytes(num_bytes)
-}
-
-/// Set whether the serializer and deserializer should indicate to types that
the format is human-readable.
-///
-/// This function only changes the setting once. On subsequent calls the value
will stay the same
-/// as the first time it is called. It is automatically called on first
allocation and defaults to
-/// [`util::DEFAULT_SERDE_HUMAN_READABLE`].
-///
-/// *NOTE*: Changing this setting can change the output of [`from_value`] and
the
-/// accepted input of [`to_value`].
-///
-/// # Returns
-/// The configured human-readable value, which might be different from what
the function was called
-/// with if the value was already set before.
-#[deprecated(
- since = "0.21.0",
- note = "Please use apache_avro::util::set_serde_human_readable"
-)]
-pub fn set_serde_human_readable(human_readable: bool) -> bool {
- util::set_serde_human_readable(human_readable)
-}
-
#[cfg(test)]
mod tests {
use crate::{
diff --git a/avro/src/reader/datum.rs b/avro/src/reader/datum.rs
index 783ca3d..8d524b2 100644
--- a/avro/src/reader/datum.rs
+++ b/avro/src/reader/datum.rs
@@ -210,101 +210,6 @@ impl<T: AvroSchema + DeserializeOwned>
SpecificDatumReader<T> {
}
}
-/// Deprecated.
-///
-/// This is equivalent to
-/// ```ignore
-/// GenericDatumReader::builder(writer_schema)
-/// .maybe_reader_schema(reader_schema)
-/// .build()?
-/// .read_value(reader)
-/// ```
-///
-/// Decode a `Value` encoded in Avro format given its `Schema` and anything
implementing `io::Read`
-/// to read from.
-///
-/// In case a reader `Schema` is provided, schema resolution will also be
performed.
-///
-/// **NOTE** This function has a quite small niche of usage and does NOT take
care of reading the
-/// header and consecutive data blocks; use [`Reader`](struct.Reader.html) if
you don't know what
-/// you are doing, instead.
-#[deprecated(since = "0.22.0", note = "Use `GenericDatumReader` instead")]
-pub fn from_avro_datum<R: Read>(
- writer_schema: &Schema,
- reader: &mut R,
- reader_schema: Option<&Schema>,
-) -> AvroResult<Value> {
- GenericDatumReader::builder(writer_schema)
- .maybe_reader_schema(reader_schema)
- .build()?
- .read_value(reader)
-}
-
-/// Deprecated.
-///
-/// This is equivalent to
-/// ```ignore
-/// GenericDatumReader::builder(writer_schema)
-/// .writer_schemata(writer_schemata)?
-/// .maybe_reader_schema(reader_schema)
-/// .build()?
-/// .read_value(reader)
-/// ```
-///
-/// Decode a `Value` from raw Avro data.
-///
-/// If the writer schema is incomplete, i.e. contains `Schema::Ref`s then it
will use the provided
-/// schemata to resolve any dependencies.
-///
-/// When a reader `Schema` is provided, schema resolution will also be
performed.
-#[deprecated(since = "0.22.0", note = "Use `GenericDatumReader` instead")]
-pub fn from_avro_datum_schemata<R: Read>(
- writer_schema: &Schema,
- writer_schemata: Vec<&Schema>,
- reader: &mut R,
- reader_schema: Option<&Schema>,
-) -> AvroResult<Value> {
- GenericDatumReader::builder(writer_schema)
- .writer_schemata(writer_schemata)?
- .maybe_reader_schema(reader_schema)
- .build()?
- .read_value(reader)
-}
-
-/// Deprecated.
-///
-/// This is equivalent to
-/// ```ignore
-/// GenericDatumReader::builder(writer_schema)
-/// .writer_schemata(writer_schemata)?
-/// .maybe_reader_schema(reader_schema)
-/// .reader_schemata(reader_schemata)?
-/// .build()?
-/// .read_value(reader)
-/// ```
-///
-/// Decode a `Value` from raw Avro data.
-///
-/// If the writer schema is incomplete, i.e. contains `Schema::Ref`s then it
will use the provided
-/// schemata to resolve any dependencies.
-///
-/// When a reader `Schema` is provided, schema resolution will also be
performed.
-#[deprecated(since = "0.22.0", note = "Use `GenericDatumReader` instead")]
-pub fn from_avro_datum_reader_schemata<R: Read>(
- writer_schema: &Schema,
- writer_schemata: Vec<&Schema>,
- reader: &mut R,
- reader_schema: Option<&Schema>,
- reader_schemata: Vec<&Schema>,
-) -> AvroResult<Value> {
- GenericDatumReader::builder(writer_schema)
- .writer_schemata(writer_schemata)?
- .maybe_reader_schema(reader_schema)
- .reader_schemata(reader_schemata)?
- .build()?
- .read_value(reader)
-}
-
#[cfg(test)]
mod tests {
use apache_avro_test_helper::TestResult;
diff --git a/avro/src/reader/single_object.rs b/avro/src/reader/single_object.rs
index 253cac3..73e5557 100644
--- a/avro/src/reader/single_object.rs
+++ b/avro/src/reader/single_object.rs
@@ -31,6 +31,9 @@ use crate::{
util::is_human_readable,
};
+/// Read `Value`s from a single object encoding.
+///
+/// Use [`SpecificSingleObjectReader`] if you need to deserialize into Rust
types.
pub struct GenericSingleObjectReader {
write_schema: ResolvedOwnedSchema,
expected_header: Vec<u8>,
@@ -96,6 +99,9 @@ impl GenericSingleObjectReader {
}
}
+/// Read Rust types from a single object encoding.
+///
+/// Use [`GenericSingleObjectReader`] if you need `Value`s that are not linked
to a type.
pub struct SpecificSingleObjectReader<T>
where
T: AvroSchema,
diff --git a/avro/src/schema/mod.rs b/avro/src/schema/mod.rs
index 0f4b129..6a254a6 100644
--- a/avro/src/schema/mod.rs
+++ b/avro/src/schema/mod.rs
@@ -230,18 +230,6 @@ impl SchemaKind {
| SchemaKind::String,
)
}
-
- #[deprecated(since = "0.22.0", note = "Use Schema::is_named instead")]
- pub fn is_named(self) -> bool {
- matches!(
- self,
- SchemaKind::Record
- | SchemaKind::Enum
- | SchemaKind::Fixed
- | SchemaKind::Ref
- | SchemaKind::Duration
- )
- }
}
impl From<&types::Value> for SchemaKind {
diff --git a/avro/src/serde/de.rs b/avro/src/serde/de.rs
index 52f9229..d8f9485 100644
--- a/avro/src/serde/de.rs
+++ b/avro/src/serde/de.rs
@@ -939,7 +939,7 @@ impl<'de> de::Deserializer<'de> for StringDeserializer {
}
}
-/// Interpret a `Value` as an instance of type `D`.
+/// Deserialize a `Value` into a type implementing `Deserialize` type.
///
/// This conversion can fail if the structure of the `Value` does not match the
/// structure expected by `D`.
diff --git a/avro/src/serde/ser.rs b/avro/src/serde/ser.rs
index bd41a56..fe09440 100644
--- a/avro/src/serde/ser.rs
+++ b/avro/src/serde/ser.rs
@@ -473,7 +473,7 @@ impl ser::SerializeStructVariant for
StructVariantSerializer {
}
}
-/// Interpret a serializeable instance as a `Value`.
+/// Serialize a type implementing `Serialize` into a `Value`.
///
/// This conversion can fail if the value is not valid as per the Avro
specification.
/// e.g: `HashMap` with non-string keys.
diff --git a/avro/src/types.rs b/avro/src/types.rs
index b65f2ff..0584e76 100644
--- a/avro/src/types.rs
+++ b/avro/src/types.rs
@@ -189,7 +189,7 @@ where
// FIXME: this is incorrect in case first type in union is not "none"
Self::Union(
value.is_some() as u32,
- Box::new(value.map_or_else(|| Self::Null, Into::into)),
+ Box::new(value.map_or(Self::Null, Into::into)),
)
}
}
diff --git a/avro/src/writer/datum.rs b/avro/src/writer/datum.rs
index 2df0a0c..5164293 100644
--- a/avro/src/writer/datum.rs
+++ b/avro/src/writer/datum.rs
@@ -169,29 +169,6 @@ impl GenericDatumWriter<'_> {
}
}
-/// Deprecated. Use [`GenericDatumWriter`] instead.
-///
-/// This is equivalent to:
-/// ```ignore
-/// GenericDatumWriter::builder(schema)
-/// .build()?
-/// .write_value_to_vec(value)
-/// ```
-///
-/// Encode a value into raw Avro data, also performs schema validation.
-///
-/// **NOTE**: This function has a quite small niche of usage and does NOT
generate headers and sync
-/// markers; use [`Writer`] to be fully Avro-compatible if you don't know what
-/// you are doing, instead.
-///
-/// [`Writer`]: crate::Writer
-#[deprecated(since = "0.22.0", note = "Use GenericDatumWriter instead")]
-pub fn to_avro_datum<T: Into<Value>>(schema: &Schema, value: T) ->
AvroResult<Vec<u8>> {
- GenericDatumWriter::builder(schema)
- .build()?
- .write_value_to_vec(value)
-}
-
/// Write the referenced [Serialize]able object to the provided [Write] object.
///
/// It is recommended to use [`GenericDatumWriter`] instead.
@@ -217,32 +194,6 @@ pub fn write_avro_datum_ref<T: Serialize, W: Write>(
data.serialize(SchemaAwareSerializer::new(writer, schema, config)?)
}
-/// Deprecated. Use [`GenericDatumWriter`] instead.
-///
-/// This is equivalent to:
-/// ```ignore
-/// GenericDatumWriter::builder(schema)
-/// .schemata(schemata)?
-/// .build()?
-/// .write_value_to_vec(value)
-/// ```
-///
-/// Encode a value into raw Avro data, also performs schema validation.
-///
-/// If the provided `schema` is incomplete then its dependencies must be
-/// provided in `schemata`
-#[deprecated(since = "0.22.0", note = "Use GenericDatumWriter instead")]
-pub fn to_avro_datum_schemata<T: Into<Value>>(
- schema: &Schema,
- schemata: Vec<&Schema>,
- value: T,
-) -> AvroResult<Vec<u8>> {
- GenericDatumWriter::builder(schema)
- .schemata(schemata)?
- .build()?
- .write_value_to_vec(value)
-}
-
#[cfg(test)]
mod tests {
use apache_avro_test_helper::TestResult;
diff --git a/avro/src/writer/mod.rs b/avro/src/writer/mod.rs
index efe4337..3a2e475 100644
--- a/avro/src/writer/mod.rs
+++ b/avro/src/writer/mod.rs
@@ -191,12 +191,6 @@ impl<'a, W: Write> Writer<'a, W> {
self.schema
}
- /// Deprecated. Use [`Writer::append_value`] instead.
- #[deprecated(since = "0.22.0", note = "Use `Writer::append_value`
instead")]
- pub fn append<T: Into<Value>>(&mut self, value: T) -> AvroResult<usize> {
- self.append_value(value)
- }
-
/// Append a value to the `Writer`, also performs schema validation.
///
/// Returns the number of bytes written (it might be 0, see below).
diff --git a/avro/src/writer/single_object.rs b/avro/src/writer/single_object.rs
index 8df3f7a..d71d908 100644
--- a/avro/src/writer/single_object.rs
+++ b/avro/src/writer/single_object.rs
@@ -33,9 +33,9 @@ use crate::{
types::Value,
};
-/// Writer that encodes messages according to the single object encoding v1
spec
-/// Uses an API similar to the current File Writer
-/// Writes all object bytes at once, and drains internal buffer
+/// Encode `Value`s to the single object encoding.
+///
+/// Use [`SpecificSingleObjectWriter`] if you need to serialize Rust types.
pub struct GenericSingleObjectWriter {
buffer: Vec<u8>,
resolved: ResolvedOwnedSchema,
@@ -93,7 +93,9 @@ impl GenericSingleObjectWriter {
}
}
-/// Writer that encodes messages according to the single object encoding v1
spec
+/// Encode Rust types to the single object encoding.
+///
+/// Use [`GenericSingleObjectWriter`] if you need to serialize `Value`s that
are not linked to a type.
#[derive(Builder)]
pub struct SpecificSingleObjectWriter<T>
where
@@ -155,12 +157,6 @@ where
_model: PhantomData,
})
}
-
- /// Deprecated. Use [`SpecificSingleObjectWriter::new`] instead.
- #[deprecated(since = "0.22.0", note = "Use new() instead")]
- pub fn with_capacity(_buffer_cap: usize) -> AvroResult<Self> {
- Self::new()
- }
}
impl<T> SpecificSingleObjectWriter<T>
diff --git a/avro/tests/append_to_existing.rs b/avro/tests/append_to_existing.rs
index 4e2f79b..45d1c81 100644
--- a/avro/tests/append_to_existing.rs
+++ b/avro/tests/append_to_existing.rs
@@ -16,7 +16,8 @@
// under the License.
use apache_avro::{
- AvroResult, Reader, Schema, Writer, read_marker,
+ AvroResult, Reader, Schema, Writer,
+ reader::read_marker,
types::{Record, Value},
};
use apache_avro_test_helper::TestResult;