Traditional server-based self-hosting will have lower average uptime, will be easier to attack, and will have a much higher chance of disappearing out of nowhere (bus factor event, or for any other reason).
A decentralized or distributed solution would make more sense as a suggestion here. Radicale (this one) is such an effort I’m aware of, although I never tried it myself or take a look at its architecture.
In case the wording tripped anyone, generators (blocks and functions) have been available for a while as an unstable feature.
This works (playground):
#![feature(gen_blocks)] gen fn gfn() -> i32 { for i in 1..=10 { yield i; } } fn gblock() -> impl Iterator<Item = i32> { gen { for i in 1..=10 { yield i; } } } fn main() { for i in gfn() { println!("{i} from gfn()"); } for i in gblock() { println!("{i} from gblock()"); } }
Note that the block-in-fn version works better at this moment (from a developer’s PoV) because
rust-analyzer
currently treatsgfn()
as an i32 value. But the block-in-fn pattern works perfectly already.