pub struct Entry {Show 56 fields
pub id: Option<SmallString>,
pub title: Option<String>,
pub title_detail: Option<TextConstruct>,
pub link: Option<String>,
pub links: Vec<Link>,
pub subtitle: Option<String>,
pub subtitle_detail: Option<TextConstruct>,
pub rights: Option<String>,
pub rights_detail: Option<TextConstruct>,
pub summary: Option<String>,
pub summary_detail: Option<TextConstruct>,
pub content: Vec<Content>,
pub published: Option<DateTime<Utc>>,
pub published_str: Option<String>,
pub updated: Option<DateTime<Utc>>,
pub updated_str: Option<String>,
pub created: Option<DateTime<Utc>>,
pub created_str: Option<String>,
pub expired: Option<DateTime<Utc>>,
pub author: Option<SmallString>,
pub author_detail: Option<Person>,
pub authors: Vec<Person>,
pub contributors: Vec<Person>,
pub publisher: Option<SmallString>,
pub publisher_detail: Option<Person>,
pub tags: Vec<Tag>,
pub enclosures: Vec<Enclosure>,
pub comments: Option<String>,
pub source: Option<Source>,
pub itunes: Option<Box<ItunesEntryMeta>>,
pub dc_creator: Option<SmallString>,
pub dc_date: Option<DateTime<Utc>>,
pub dc_subject: Vec<String>,
pub dc_rights: Option<String>,
pub media_thumbnail: Vec<MediaThumbnail>,
pub media_content: Vec<MediaContent>,
pub media_credit: Vec<MediaCredit>,
pub media_copyright: Option<MediaCopyright>,
pub media_rating: Option<MediaRating>,
pub media_keywords: Option<String>,
pub media_description: Option<String>,
pub podcast_transcripts: Vec<PodcastTranscript>,
pub podcast_persons: Vec<PodcastPerson>,
pub podcast: Option<Box<PodcastEntryMeta>>,
pub where: Option<Box<GeoLocation>>,
pub geo_lat: Option<String>,
pub geo_long: Option<String>,
pub license: Option<String>,
pub in_reply_to: Vec<InReplyTo>,
pub thr_total: Option<u32>,
pub slash_comments: Option<u32>,
pub slash_hit_parade: Option<String>,
pub wfw_comment_rss: Option<String>,
pub guidislink: Option<bool>,
pub language: Option<SmallString>,
pub external_url: Option<String>,
}Expand description
Feed entry/item
Fields§
§id: Option<SmallString>Unique entry identifier (stored inline for IDs ≤24 bytes)
title: Option<String>Entry title
title_detail: Option<TextConstruct>Detailed title with metadata
link: Option<String>Primary link
links: Vec<Link>All links associated with this entry
subtitle: Option<String>Entry subtitle (Atom §4.2.12 at entry level)
subtitle_detail: Option<TextConstruct>Detailed subtitle with metadata
rights: Option<String>Rights/copyright statement
rights_detail: Option<TextConstruct>Detailed rights with metadata
summary: Option<String>Short description/summary
summary_detail: Option<TextConstruct>Detailed summary with metadata
content: Vec<Content>Full content blocks
published: Option<DateTime<Utc>>Publication date
published_str: Option<String>Original publication date string as found in the feed (timezone preserved)
updated: Option<DateTime<Utc>>Last update date
updated_str: Option<String>Original update date string as found in the feed (timezone preserved)
created: Option<DateTime<Utc>>Creation date
created_str: Option<String>Original creation date string as found in the feed (timezone preserved)
expired: Option<DateTime<Utc>>Expiration date
Primary author name (stored inline for names ≤24 bytes)
Detailed author information
All authors
contributors: Vec<Person>Contributors
publisher: Option<SmallString>Publisher name (stored inline for names ≤24 bytes)
publisher_detail: Option<Person>Detailed publisher information
Tags/categories
enclosures: Vec<Enclosure>Media enclosures (audio, video, etc.)
comments: Option<String>Comments URL or text
source: Option<Source>Source feed reference
itunes: Option<Box<ItunesEntryMeta>>iTunes episode metadata (if present)
dc_creator: Option<SmallString>Dublin Core creator (author fallback) - stored inline for names ≤24 bytes
dc_date: Option<DateTime<Utc>>Dublin Core date (publication date fallback)
dc_subject: Vec<String>Dublin Core subjects (tags)
dc_rights: Option<String>Dublin Core rights (copyright)
media_thumbnail: Vec<MediaThumbnail>Media RSS thumbnails
media_content: Vec<MediaContent>Media RSS content items
media_credit: Vec<MediaCredit>Media RSS credits (media:credit elements)
media_copyright: Option<MediaCopyright>Media RSS copyright (media:copyright element)
media_rating: Option<MediaRating>Media RSS rating (media:rating element)
media_keywords: Option<String>Media RSS keywords (raw comma-separated string from media:keywords)
media_description: Option<String>Media RSS description (plain text only; None if type != “plain”)
podcast_transcripts: Vec<PodcastTranscript>Podcast 2.0 transcripts for this episode
podcast_persons: Vec<PodcastPerson>Podcast 2.0 persons for this episode (hosts, guests, etc.)
podcast: Option<Box<PodcastEntryMeta>>Podcast 2.0 episode metadata
where: Option<Box<GeoLocation>>GeoRSS location data (exposed as where per Python feedparser API)
geo_lat: Option<String>W3C Basic Geo latitude (geo:lat)
geo_long: Option<String>W3C Basic Geo longitude (geo:long)
license: Option<String>License URL (Creative Commons, etc.)
in_reply_to: Vec<InReplyTo>Atom Threading Extensions: entries this is a reply to (thr:in-reply-to)
thr_total: Option<u32>Atom Threading Extensions: total response count (thr:total)
Stored as u32 in Rust for type safety. Python binding converts to string to match Python feedparser’s API.
slash_comments: Option<u32>Slash namespace: comment count (slash:comments)
slash_hit_parade: Option<String>Slash namespace: hit parade (slash:hit_parade)
wfw_comment_rss: Option<String>WFW namespace: comment RSS feed URL (wfw:commentRss)
guidislink: Option<bool>Whether the RSS <guid> is a permalink (isPermaLink attribute).
true when isPermaLink="true" or the attribute is absent (RSS 2.0 default).
false when isPermaLink="false". None when no <guid> element is present.
language: Option<SmallString>Entry language (JSON Feed language field)
external_url: Option<String>External URL where the full content lives (JSON Feed external_url)
Implementations§
Source§impl Entry
impl Entry
Sourcepub fn with_capacity() -> Self
pub fn with_capacity() -> Self
Creates Entry with pre-allocated capacity for collections
Pre-allocates space for typical entry fields:
- 1-2 links (alternate, related)
- 1 content block
- 1 author
- 2-3 tags
- 0-1 enclosures
- 2 podcast transcripts (typical for podcasts with multiple languages)
- 4 podcast persons (host, co-hosts, guests)
§Examples
use feedparser_rs::Entry;
let entry = Entry::with_capacity();Sourcepub fn set_title(&mut self, text: TextConstruct)
pub fn set_title(&mut self, text: TextConstruct)
Sets title field with TextConstruct, storing both simple and detailed versions
§Examples
use feedparser_rs::{Entry, TextConstruct};
let mut entry = Entry::default();
entry.set_title(TextConstruct::text("Great Article"));
assert_eq!(entry.title.as_deref(), Some("Great Article"));Sourcepub fn set_subtitle(&mut self, text: TextConstruct)
pub fn set_subtitle(&mut self, text: TextConstruct)
Sets subtitle field with TextConstruct, storing both simple and detailed versions
§Examples
use feedparser_rs::{Entry, TextConstruct};
let mut entry = Entry::default();
entry.set_subtitle(TextConstruct::text("A teaser"));
assert_eq!(entry.subtitle.as_deref(), Some("A teaser"));Sourcepub fn set_rights(&mut self, text: TextConstruct)
pub fn set_rights(&mut self, text: TextConstruct)
Sets rights field with TextConstruct, storing both simple and detailed versions
Sourcepub fn set_summary(&mut self, text: TextConstruct)
pub fn set_summary(&mut self, text: TextConstruct)
Sets summary field with TextConstruct, storing both simple and detailed versions
§Examples
use feedparser_rs::{Entry, TextConstruct};
let mut entry = Entry::default();
entry.set_summary(TextConstruct::text("A summary"));
assert_eq!(entry.summary.as_deref(), Some("A summary"));Sets author field with Person, storing both simple and detailed versions
§Examples
use feedparser_rs::{Entry, Person};
let mut entry = Entry::default();
entry.set_author(Person::from_name("Jane Doe"));
assert_eq!(entry.author.as_deref(), Some("Jane Doe"));Sourcepub fn set_publisher(&mut self, person: Person)
pub fn set_publisher(&mut self, person: Person)
Sets publisher field with Person, storing both simple and detailed versions
§Examples
use feedparser_rs::{Entry, Person};
let mut entry = Entry::default();
entry.set_publisher(Person::from_name("ACME Corp"));
assert_eq!(entry.publisher.as_deref(), Some("ACME Corp"));Sourcepub fn set_alternate_link(&mut self, href: String, max_links: usize)
pub fn set_alternate_link(&mut self, href: String, max_links: usize)
Sets the primary link and adds it to the links collection
This is a convenience method that:
- Sets the
linkfield (if not already set) - Adds an “alternate” link to the
linkscollection
§Examples
use feedparser_rs::Entry;
let mut entry = Entry::default();
entry.set_alternate_link("https://example.com/post/1".to_string(), 10);
assert_eq!(entry.link.as_deref(), Some("https://example.com/post/1"));
assert_eq!(entry.links.len(), 1);
assert_eq!(entry.links[0].rel.as_deref(), Some("alternate"));