nostrdb-rs

nostrdb in rust!
git clone git://jb55.com/nostrdb-rs
Log | Files | Refs | Submodules | README | LICENSE

commit ad3b345416d17ec75362fbfe82309c8196f5ad4b
parent c083372c36c9ed838dbf3d8742044f97c915ae2b
Author: Ken Sedgwick <ken@bonsai.com>
Date:   Tue,  4 Feb 2025 10:36:37 -0800

add relays_iter to bech32_{nprofile,nevent,naddr}

Diffstat:
Msrc/block.rs | 22++++++++++++++++++++++
1 file changed, 22 insertions(+), 0 deletions(-)

diff --git a/src/block.rs b/src/block.rs @@ -71,6 +71,12 @@ impl bindings::bech32_nprofile { pub fn pubkey(&self) -> &[u8; 32] { unsafe { &*(self.pubkey as *const [u8; 32]) } } + + pub fn relays_iter(&self) -> impl Iterator<Item = &str> { + self.relays.relays[0..(self.relays.num_relays as usize)] + .iter() + .map(|block| block.as_str()) + } } impl bindings::bech32_npub { @@ -98,6 +104,20 @@ impl bindings::bech32_nevent { Some(&*(self.pubkey as *const [u8; 32])) } } + + pub fn relays_iter(&self) -> impl Iterator<Item = &str> { + self.relays.relays[0..(self.relays.num_relays as usize)] + .iter() + .map(|block| block.as_str()) + } +} + +impl bindings::bech32_naddr { + pub fn relays_iter(&self) -> impl Iterator<Item = &str> { + self.relays.relays[0..(self.relays.num_relays as usize)] + .iter() + .map(|block| block.as_str()) + } } impl<'a> Mention<'a> { @@ -421,6 +441,8 @@ mod tests { assert_eq!(p.relays.num_relays, 2); assert_eq!(p.relays.relays[0].as_str(), "wss://r.x.com"); assert_eq!(p.relays.relays[1].as_str(), "wss://djbas.sadkb.com"); + let relays: Vec<&str> = p.relays_iter().collect(); + assert_eq!(relays, vec!["wss://r.x.com", "wss://djbas.sadkb.com"]); nprofile_check = true; } }