move unstable code out of lib.rs
This commit is contained in:
parent
1a91735a6a
commit
6bf0376ac6
22
src/iter.rs
Normal file
22
src/iter.rs
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
use std::convert::identity;
|
||||
|
||||
pub(crate) fn loop_list<T: Clone>(iter: impl IntoIterator<Item = T>) -> impl Iterator<Item = T> {
|
||||
loop_list_ex(iter, identity, identity)
|
||||
}
|
||||
|
||||
pub(crate) fn loop_list_ex<T: Clone, U>(
|
||||
iter: impl IntoIterator<Item = T>,
|
||||
mut fa: impl FnMut(T) -> U,
|
||||
mut fb: impl FnMut(T) -> U,
|
||||
) -> impl Iterator<Item = U> {
|
||||
gen move {
|
||||
let mut iter = iter.into_iter();
|
||||
let Some(first) = iter.next() else { return };
|
||||
yield fa(first.clone());
|
||||
for item in iter {
|
||||
yield fb(item.clone());
|
||||
yield fa(item);
|
||||
}
|
||||
yield fb(first);
|
||||
}
|
||||
}
|
||||
24
src/lib.rs
24
src/lib.rs
|
|
@ -1,12 +1,13 @@
|
|||
#![feature(gen_blocks)]
|
||||
|
||||
use std::{convert::identity, error::Error, f32::consts::PI};
|
||||
use std::{error::Error, f32::consts::PI};
|
||||
|
||||
use glam::{Mat4, UVec2, Vec2, Vec3, vec3};
|
||||
use rand_distr::Distribution as _;
|
||||
|
||||
use crate::{
|
||||
camera::OrbitalCamera,
|
||||
iter::loop_list,
|
||||
ray::Ray,
|
||||
render::{
|
||||
DEPTH_FORMAT, OUTPUT_FORMAT,
|
||||
|
|
@ -118,27 +119,6 @@ pub fn new_tripod(device: &wgpu::Device) -> Mesh {
|
|||
)
|
||||
}
|
||||
|
||||
fn loop_list<T: Clone>(iter: impl IntoIterator<Item = T>) -> impl Iterator<Item = T> {
|
||||
loop_list_ex(iter, identity, identity)
|
||||
}
|
||||
|
||||
fn loop_list_ex<T: Clone, U>(
|
||||
iter: impl IntoIterator<Item = T>,
|
||||
mut fa: impl FnMut(T) -> U,
|
||||
mut fb: impl FnMut(T) -> U,
|
||||
) -> impl Iterator<Item = U> {
|
||||
gen move {
|
||||
let mut iter = iter.into_iter();
|
||||
let Some(first) = iter.next() else { return };
|
||||
yield fa(first.clone());
|
||||
for item in iter {
|
||||
yield fb(item.clone());
|
||||
yield fa(item);
|
||||
}
|
||||
yield fb(first);
|
||||
}
|
||||
}
|
||||
|
||||
impl OrbitalCamera {
|
||||
fn make_ray(&self, rng: &mut impl rand::Rng) -> Ray {
|
||||
let off: f32 = rand_distr::StandardUniform.sample(rng);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user