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)]
|
#![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 glam::{Mat4, UVec2, Vec2, Vec3, vec3};
|
||||||
use rand_distr::Distribution as _;
|
use rand_distr::Distribution as _;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
camera::OrbitalCamera,
|
camera::OrbitalCamera,
|
||||||
|
iter::loop_list,
|
||||||
ray::Ray,
|
ray::Ray,
|
||||||
render::{
|
render::{
|
||||||
DEPTH_FORMAT, OUTPUT_FORMAT,
|
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 {
|
impl OrbitalCamera {
|
||||||
fn make_ray(&self, rng: &mut impl rand::Rng) -> Ray {
|
fn make_ray(&self, rng: &mut impl rand::Rng) -> Ray {
|
||||||
let off: f32 = rand_distr::StandardUniform.sample(rng);
|
let off: f32 = rand_distr::StandardUniform.sample(rng);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user