diff options
| author | metamuffin <metamuffin@disroot.org> | 2026-02-27 20:56:20 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2026-02-27 20:56:20 +0100 |
| commit | 7930d543a2aa68d4ad2958605827d7eb1baa91f8 (patch) | |
| tree | fe59d1f549e303a96b78d3e925d75abb70b73af0 /common/src | |
| parent | c05bfcc2775f0e11db6e856bfcf06d0419c35d54 (diff) | |
| download | jellything-7930d543a2aa68d4ad2958605827d7eb1baa91f8.tar jellything-7930d543a2aa68d4ad2958605827d7eb1baa91f8.tar.bz2 jellything-7930d543a2aa68d4ad2958605827d7eb1baa91f8.tar.zst | |
reimplement Object as slice type
Diffstat (limited to 'common/src')
| -rw-r--r-- | common/src/api.rs | 7 | ||||
| -rw-r--r-- | common/src/internal.rs | 2 | ||||
| -rw-r--r-- | common/src/lib.rs | 1 | ||||
| -rw-r--r-- | common/src/node.rs | 78 | ||||
| -rw-r--r-- | common/src/user.rs | 8 |
5 files changed, 49 insertions, 47 deletions
diff --git a/common/src/api.rs b/common/src/api.rs index d9f27c5..bf79cc0 100644 --- a/common/src/api.rs +++ b/common/src/api.rs @@ -5,12 +5,13 @@ */ use jellyobject::{Object, Tag}; +use std::borrow::Cow; use std::collections::BTreeMap; -#[derive(Debug, Clone, Copy)] +#[derive(Debug)] pub struct Nku<'a> { - pub node: Object<'a>, - pub userdata: Object<'a>, + pub node: Cow<'a, Object>, + pub userdata: Cow<'a, Object>, pub role: Option<&'a str>, } diff --git a/common/src/internal.rs b/common/src/internal.rs index 5aedfc7..844468d 100644 --- a/common/src/internal.rs +++ b/common/src/internal.rs @@ -10,7 +10,7 @@ use jellyobject::fields; use serde::{Deserialize, Serialize}; fields! { - IM_PATH: &str = b"Ipth"; + IM_PATH: str = b"Ipth"; IM_MTIME: u64 = b"Imtm"; } diff --git a/common/src/lib.rs b/common/src/lib.rs index d94c72c..417acee 100644 --- a/common/src/lib.rs +++ b/common/src/lib.rs @@ -3,6 +3,7 @@ which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2025 metamuffin <metamuffin.org> */ +#![feature(phantom_variance_markers)] pub mod api; pub mod internal; pub mod node; diff --git a/common/src/node.rs b/common/src/node.rs index 92b5a5b..ff3289f 100644 --- a/common/src/node.rs +++ b/common/src/node.rs @@ -10,51 +10,51 @@ fields! { // Tag counter: 111 NO_KIND: Tag = b"kind"; - NO_TITLE: &str = b"titl"; + NO_TITLE: str = b"titl"; NO_PARENT: u64 = b"prnt"; // multi - NO_SUBTITLE: &str = b"sbtl"; - NO_TAGLINE: &str = b"tgln"; - NO_DESCRIPTION: &str = b"desc"; + NO_SUBTITLE: str = b"sbtl"; + NO_TAGLINE: str = b"tgln"; + NO_DESCRIPTION: str = b"desc"; NO_RELEASEDATE: i64 = b"rldt"; NO_DURATION: f64 = b"durn"; NO_INDEX: u64 = b"indx"; NO_SEASON_INDEX: u64 = b"sidx"; NO_TRACK: Object = b"trak"; // multi NO_CHAPTER: Object = b"chpt"; // multi - NO_TAG: &str = b"tag1"; // multi + NO_TAG: str = b"tag1"; // multi NO_RATINGS: Object = b"rtng"; NO_PICTURES: Object = b"pict"; NO_IDENTIFIERS: Object = b"iden"; NO_VISIBILITY: Tag = b"visi"; NO_STORAGE_SIZE: u64 = b"stsz"; NO_CREDIT: Object = b"crdt"; // multi - NO_SLUG: &str = b"slug"; + NO_SLUG: str = b"slug"; NO_METASOURCE: Object = b"msrc"; CR_NODE: u64 = b"node"; CR_KIND: Tag = b"kind"; - CR_ROLE: &str = b"role"; // multi + CR_ROLE: str = b"role"; // multi TR_KIND: Tag = b"kind"; TR_SOURCE: Object = b"sour"; - TR_NAME: &str = b"name"; - TR_CODEC: &str = b"codc"; - TR_LANGUAGE: &str = b"lang"; // BCP 47 + TR_NAME: str = b"name"; + TR_CODEC: str = b"codc"; + TR_LANGUAGE: str = b"lang"; // BCP 47 TR_RATE: f64 = b"rate"; TR_BIT_DEPTH: u32 = b"bdep"; TR_CHANNELS: u32 = b"chnl"; TR_PIXEL_WIDTH: u32 = b"pwid"; TR_PIXEL_HEIGHT: u32 = b"phei"; - TRSOURCE_LOCAL_PATH: &str = b"lpat"; + TRSOURCE_LOCAL_PATH: str = b"lpat"; TRSOURCE_LOCAL_TRACKNUM: u64 = b"ltrn"; CH_START: f64 = b"strt"; CH_END: f64 = b"end1"; - CH_NAME: &str = b"name"; + CH_NAME: str = b"name"; - PICT_COVER: &str = b"covr"; - PICT_BACKDROP: &str = b"bdro"; + PICT_COVER: str = b"covr"; + PICT_BACKDROP: str = b"bdro"; RTYP_IMDB: f64 = b"imdb"; RTYP_TMDB: f64 = b"tmdb"; @@ -65,31 +65,31 @@ fields! { RTYP_YOUTUBE_SUBSCRIBERS: f64 = b"ytsu"; RTYP_TRAKT: f64 = b"trkt"; - IDENT_MUSICBRAINZ_RECORDING: &str = b"mbrc"; - IDENT_MUSICBRAINZ_ARTIST: &str = b"mbar"; - IDENT_MUSICBRAINZ_RELEASE: &str = b"mbrl"; - IDENT_MUSICBRAINZ_RELEASE_GROUP: &str = b"mbrg"; - IDENT_ACOUST_ID_TRACK: &str = b"actr"; - IDENT_YOUTUBE_VIDEO: &str = b"ytvi"; - IDENT_YOUTUBE_CHANNEL: &str = b"ytc1"; - IDENT_YOUTUBE_CHANNEL_HANDLE: &str = b"ytch"; - IDENT_BANDCAMP: &str = b"bcmp"; - IDENT_ISRC: &str = b"isrc"; - IDENT_BARCODE: &str = b"barc"; - IDENT_TRAKT_MOVIE: &str = b"trmv"; - IDENT_TRAKT_SHOW: &str = b"trsh"; - IDENT_TRAKT_SEASON: &str = b"trse"; - IDENT_TRAKT_EPISODE: &str = b"trep"; - IDENT_TRAKT_PERSON: &str = b"trpe"; - IDENT_IMDB: &str = b"imdb"; - IDENT_IMDB_PERSON: &str = b"impe"; - IDENT_TMDB_SERIES: &str = b"tmse"; - IDENT_TMDB_MOVIE: &str = b"tmmv"; - IDENT_TMDB_PERSON: &str = b"tmpe"; - IDENT_TVDB: &str = b"tvdb"; - IDENT_OMDB: &str = b"omdb"; - IDENT_VGMDB_ARTIST: &str = b"vgar"; - IDENT_WIKIDATA: &str = b"wkdt"; + IDENT_MUSICBRAINZ_RECORDING: str = b"mbrc"; + IDENT_MUSICBRAINZ_ARTIST: str = b"mbar"; + IDENT_MUSICBRAINZ_RELEASE: str = b"mbrl"; + IDENT_MUSICBRAINZ_RELEASE_GROUP: str = b"mbrg"; + IDENT_ACOUST_ID_TRACK: str = b"actr"; + IDENT_YOUTUBE_VIDEO: str = b"ytvi"; + IDENT_YOUTUBE_CHANNEL: str = b"ytc1"; + IDENT_YOUTUBE_CHANNEL_HANDLE: str = b"ytch"; + IDENT_BANDCAMP: str = b"bcmp"; + IDENT_ISRC: str = b"isrc"; + IDENT_BARCODE: str = b"barc"; + IDENT_TRAKT_MOVIE: str = b"trmv"; + IDENT_TRAKT_SHOW: str = b"trsh"; + IDENT_TRAKT_SEASON: str = b"trse"; + IDENT_TRAKT_EPISODE: str = b"trep"; + IDENT_TRAKT_PERSON: str = b"trpe"; + IDENT_IMDB: str = b"imdb"; + IDENT_IMDB_PERSON: str = b"impe"; + IDENT_TMDB_SERIES: str = b"tmse"; + IDENT_TMDB_MOVIE: str = b"tmmv"; + IDENT_TMDB_PERSON: str = b"tmpe"; + IDENT_TVDB: str = b"tvdb"; + IDENT_OMDB: str = b"omdb"; + IDENT_VGMDB_ARTIST: str = b"vgar"; + IDENT_WIKIDATA: str = b"wkdt"; } diff --git a/common/src/user.rs b/common/src/user.rs index 6511b10..b83cc9c 100644 --- a/common/src/user.rs +++ b/common/src/user.rs @@ -6,13 +6,13 @@ use jellyobject::{Object, Tag, enums, fields}; -pub type User<'a> = Object<'a>; +pub type User = Object; fields! { - USER_LOGIN: &str = b"Ulgn"; - USER_PASSWORD: &[u8] = b"Upwd"; + USER_LOGIN: str = b"Ulgn"; + USER_PASSWORD: [u8] = b"Upwd"; USER_PASSWORD_REQUIRE_CHANGE: () = b"Upwc"; - USER_NAME: &str = b"Unam"; + USER_NAME: str = b"Unam"; USER_ADMIN: () = b"Uadm"; USER_THEME_PRESET: Tag = b"Utpr"; USER_THEME_ACCENT: u32 = b"Utac"; |