Add #[must_use] annotation to all iterator structs

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1690>
This commit is contained in:
Sebastian Dröge 2025-03-28 12:42:06 +02:00
parent de65180c15
commit 493175742f
16 changed files with 22 additions and 0 deletions

View file

@ -133,6 +133,7 @@ impl AnalyticsMtdRef<'_, AnalyticsClassificationMtd> {
} }
} }
#[must_use = "iterators are lazy and do nothing unless consumed"]
pub struct AnalyticsClassificationIterator<'a> { pub struct AnalyticsClassificationIterator<'a> {
mtd: &'a AnalyticsMtdRef<'a, AnalyticsClassificationMtd>, mtd: &'a AnalyticsMtdRef<'a, AnalyticsClassificationMtd>,
index: usize, index: usize,

View file

@ -468,6 +468,7 @@ impl<'a, T: AnalyticsMtd> AsRef<AnalyticsMtdRef<'a, T>> for AnalyticsMtdRefMut<'
macro_rules! define_mtd_iter { macro_rules! define_mtd_iter {
($name:ident, $metaref:ty, $itemref:ty, $copy_meta:expr) => { ($name:ident, $metaref:ty, $itemref:ty, $copy_meta:expr) => {
#[must_use = "iterators are lazy and do nothing unless consumed"]
pub struct $name<'a, T: AnalyticsMtd> { pub struct $name<'a, T: AnalyticsMtd> {
meta: $metaref, meta: $metaref,
state: glib::ffi::gpointer, state: glib::ffi::gpointer,

View file

@ -225,6 +225,7 @@ pub const AUDIO_FORMAT_F32: crate::AudioFormat = crate::AudioFormat::F32le;
#[cfg(target_endian = "little")] #[cfg(target_endian = "little")]
pub const AUDIO_FORMAT_F64: crate::AudioFormat = crate::AudioFormat::F64le; pub const AUDIO_FORMAT_F64: crate::AudioFormat = crate::AudioFormat::F64le;
#[must_use = "iterators are lazy and do nothing unless consumed"]
pub struct AudioFormatIterator { pub struct AudioFormatIterator {
idx: usize, idx: usize,
len: usize, len: usize,

View file

@ -3,6 +3,7 @@ use std::fmt;
use crate::{prelude::*, DiscovererStreamInfo}; use crate::{prelude::*, DiscovererStreamInfo};
#[must_use = "iterators are lazy and do nothing unless consumed"]
#[derive(Debug)] #[derive(Debug)]
pub struct Iter { pub struct Iter {
stream_info: Option<DiscovererStreamInfo>, stream_info: Option<DiscovererStreamInfo>,

View file

@ -651,6 +651,7 @@ impl ToOwned for SDPMediaRef {
macro_rules! define_iter( macro_rules! define_iter(
($name:ident, $typ:ty, $get_item:expr, $get_len:expr) => { ($name:ident, $typ:ty, $get_item:expr, $get_len:expr) => {
#[must_use = "iterators are lazy and do nothing unless consumed"]
#[derive(Debug)] #[derive(Debug)]
pub struct $name<'a> { pub struct $name<'a> {
media: &'a SDPMediaRef, media: &'a SDPMediaRef,

View file

@ -1007,6 +1007,7 @@ impl glib::value::ToValueOptional for SDPMessageRef {
macro_rules! define_iter( macro_rules! define_iter(
($name:ident, $typ:ty, $get_item:expr, $get_len:expr) => { ($name:ident, $typ:ty, $get_item:expr, $get_len:expr) => {
#[must_use = "iterators are lazy and do nothing unless consumed"]
#[derive(Debug)] #[derive(Debug)]
pub struct $name<'a> { pub struct $name<'a> {
message: &'a SDPMessageRef, message: &'a SDPMessageRef,
@ -1103,6 +1104,7 @@ macro_rules! define_iter(
macro_rules! define_iter_mut( macro_rules! define_iter_mut(
($name:ident, $typ:ty, $get_item:expr, $get_len:expr) => { ($name:ident, $typ:ty, $get_item:expr, $get_len:expr) => {
#[must_use = "iterators are lazy and do nothing unless consumed"]
#[derive(Debug)] #[derive(Debug)]
pub struct $name<'a> { pub struct $name<'a> {
message: &'a mut SDPMessageRef, message: &'a mut SDPMessageRef,

View file

@ -336,6 +336,7 @@ impl Ord for crate::VideoFormat {
} }
} }
#[must_use = "iterators are lazy and do nothing unless consumed"]
pub struct VideoFormatIterator { pub struct VideoFormatIterator {
idx: usize, idx: usize,
len: usize, len: usize,

View file

@ -415,6 +415,7 @@ impl VideoRegionOfInterestMeta {
} }
} }
#[must_use = "iterators are lazy and do nothing unless consumed"]
pub struct ParamsIter<'a> { pub struct ParamsIter<'a> {
_meta: &'a VideoRegionOfInterestMeta, _meta: &'a VideoRegionOfInterestMeta,
list: Option<ptr::NonNull<glib::ffi::GList>>, list: Option<ptr::NonNull<glib::ffi::GList>>,

View file

@ -454,6 +454,7 @@ impl<'a> std::iter::FromIterator<&'a VideoOverlayRectangle> for VideoOverlayComp
} }
} }
#[must_use = "iterators are lazy and do nothing unless consumed"]
pub struct Iter<'a> { pub struct Iter<'a> {
composition: &'a VideoOverlayCompositionRef, composition: &'a VideoOverlayCompositionRef,
idx: usize, idx: usize,

View file

@ -152,6 +152,7 @@ impl<'a> TryFrom<&'a crate::VideoInfo> for VideoVBIParser {
} }
} }
#[must_use = "iterators are lazy and do nothing unless consumed"]
#[derive(Debug)] #[derive(Debug)]
pub struct AncillaryIter<'a> { pub struct AncillaryIter<'a> {
parser: &'a mut VideoVBIParser, parser: &'a mut VideoVBIParser,

View file

@ -873,6 +873,7 @@ impl BufferRef {
macro_rules! define_meta_iter( macro_rules! define_meta_iter(
($name:ident, $typ:ty, $mtyp:ty, $prepare_buffer:expr, $from_ptr:expr) => { ($name:ident, $typ:ty, $mtyp:ty, $prepare_buffer:expr, $from_ptr:expr) => {
#[must_use = "iterators are lazy and do nothing unless consumed"]
pub struct $name<'a, T: MetaAPI + 'a> { pub struct $name<'a, T: MetaAPI + 'a> {
buffer: $typ, buffer: $typ,
state: glib::ffi::gpointer, state: glib::ffi::gpointer,
@ -1331,6 +1332,7 @@ pub struct Dump<'a> {
end: Bound<usize>, end: Bound<usize>,
} }
#[must_use = "iterators are lazy and do nothing unless consumed"]
struct BufferChunked16Iter<'a> { struct BufferChunked16Iter<'a> {
buffer: &'a BufferRef, buffer: &'a BufferRef,
mem_idx: usize, mem_idx: usize,

View file

@ -320,6 +320,7 @@ impl Bus {
} }
} }
#[must_use = "iterators are lazy and do nothing unless consumed"]
#[derive(Debug)] #[derive(Debug)]
pub struct Iter<'a> { pub struct Iter<'a> {
bus: &'a Bus, bus: &'a Bus,

View file

@ -694,6 +694,7 @@ impl<T: StaticType> glib::translate::FromGlibPtrFull<*mut ffi::GstIterator> for
} }
} }
#[must_use = "iterators are lazy and do nothing unless consumed"]
pub struct StdIterator<T> { pub struct StdIterator<T> {
inner: Iterator<T>, inner: Iterator<T>,
error: Option<IteratorError>, error: Option<IteratorError>,

View file

@ -1780,6 +1780,7 @@ crate::utils::define_fixed_size_iter!(
} }
); );
#[must_use = "iterators are lazy and do nothing unless consumed"]
#[derive(Debug)] #[derive(Debug)]
pub struct Iter<'a> { pub struct Iter<'a> {
iter: FieldIterator<'a>, iter: FieldIterator<'a>,
@ -1844,6 +1845,7 @@ impl ExactSizeIterator for Iter<'_> {}
impl std::iter::FusedIterator for Iter<'_> {} impl std::iter::FusedIterator for Iter<'_> {}
#[cfg(feature = "v1_26")] #[cfg(feature = "v1_26")]
#[must_use = "iterators are lazy and do nothing unless consumed"]
#[derive(Debug)] #[derive(Debug)]
pub struct IdIter<'a> { pub struct IdIter<'a> {
iter: FieldIdIterator<'a>, iter: FieldIdIterator<'a>,

View file

@ -635,6 +635,7 @@ impl PartialEq for TagListRef {
impl Eq for TagListRef {} impl Eq for TagListRef {}
#[must_use = "iterators are lazy and do nothing unless consumed"]
#[derive(Debug)] #[derive(Debug)]
pub struct TagIter<'a, T: Tag<'a>> { pub struct TagIter<'a, T: Tag<'a>> {
taglist: &'a TagListRef, taglist: &'a TagListRef,
@ -743,6 +744,7 @@ where
{ {
} }
#[must_use = "iterators are lazy and do nothing unless consumed"]
#[derive(Debug)] #[derive(Debug)]
pub struct GenericTagIter<'a> { pub struct GenericTagIter<'a> {
taglist: &'a TagListRef, taglist: &'a TagListRef,
@ -837,6 +839,7 @@ impl ExactSizeIterator for GenericTagIter<'_> {}
impl std::iter::FusedIterator for GenericTagIter<'_> {} impl std::iter::FusedIterator for GenericTagIter<'_> {}
#[must_use = "iterators are lazy and do nothing unless consumed"]
#[derive(Debug)] #[derive(Debug)]
pub struct GenericIter<'a> { pub struct GenericIter<'a> {
taglist: &'a TagListRef, taglist: &'a TagListRef,
@ -931,6 +934,7 @@ impl ExactSizeIterator for GenericIter<'_> {}
impl std::iter::FusedIterator for GenericIter<'_> {} impl std::iter::FusedIterator for GenericIter<'_> {}
#[must_use = "iterators are lazy and do nothing unless consumed"]
#[derive(Debug)] #[derive(Debug)]
pub struct Iter<'a> { pub struct Iter<'a> {
taglist: &'a TagListRef, taglist: &'a TagListRef,

View file

@ -81,6 +81,7 @@ where
macro_rules! define_fixed_size_iter( macro_rules! define_fixed_size_iter(
($name:ident, $typ:ty, $ityp:ty, $get_len:expr, $get_item:expr) => { ($name:ident, $typ:ty, $ityp:ty, $get_len:expr, $get_item:expr) => {
#[must_use = "iterators are lazy and do nothing unless consumed"]
#[derive(Debug)] #[derive(Debug)]
pub struct $name<'a> { pub struct $name<'a> {
pub(crate) collection: $typ, pub(crate) collection: $typ,