aboutsummaryrefslogtreecommitdiff
path: root/common/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-02-27 20:56:20 +0100
committermetamuffin <metamuffin@disroot.org>2026-02-27 20:56:20 +0100
commit7930d543a2aa68d4ad2958605827d7eb1baa91f8 (patch)
treefe59d1f549e303a96b78d3e925d75abb70b73af0 /common/src
parentc05bfcc2775f0e11db6e856bfcf06d0419c35d54 (diff)
downloadjellything-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.rs7
-rw-r--r--common/src/internal.rs2
-rw-r--r--common/src/lib.rs1
-rw-r--r--common/src/node.rs78
-rw-r--r--common/src/user.rs8
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";