Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pub fn interpolate_rectilinear(width: u32, height: u32, mut min_x: f64, mut max_x: f64, mut min_y: f64, mut max_y: f64)
- -> Box<Fn(u32, u32) -> Complex64 + Send + Sync + 'static> { ... }
- pub fn interpolate_stretch(width: u32, height: u32, mut min_x: f64, mut max_x: f64, mut min_y: f64, mut max_y: f64)
- -> Box<Fn(u32, u32) -> Complex64 + Send + Sync + 'static> { ... }
- pub fn parallel_image<F>(width: u32, height: u32, function: &F, interpolate: &Box<Fn(u32, u32) -> Complex64 + Send + Sync>, threshold: f64)
- -> ImageBuffer<image::Luma<u8>, Vec<u8>>
- where F: Sync + Fn(Complex64) -> Complex64
- { ... }
- pub fn sequential_image<F>(width: u32, height: u32, function: &F, interpolate: &Box<Fn(u32, u32) -> Complex64>, threshold: f64)
- -> ImageBuffer<image::Luma<u8>, Vec<u8>>
- where F: Fn(Complex64) -> Complex64
- { ... }
- let interpolate = interpolate_rectilinear(width, height, -1.0, 1.0, -1.0, 1.0);
- let image = parallel_image(width * 2, height * 2, &default_julia, &interpolate, 2.0);
- #[test]
- fn test_serial_parallel_agree() {
- let (width, height) = (200, 200);
- let threshold = 2.0;
- let interpolate = interpolate_stretch(width, height, -1.0, 1.0, -1.0, 1.0);
- assert!(parallel_image(width, height, &default_julia, &interpolate, threshold)
- .pixels()
- .zip(sequential_image(width, height, &default_julia, &interpolate, threshold)
- .pixels())
- .all(|(p, s)| p == s));
- }
- > cargo test
- Compiling julia-set v0.3.0
- src/lib.rs:231:66: 231:78 error: mismatched types [E0308]
- src/lib.rs:231 .zip(sequential_image(width, height, &default_julia, &interpolate, threshold)
- ^~~~~~~~~~~~
- src/lib.rs:229:9: 233:36 note: in this expansion of assert! (defined in <std macros>)
- src/lib.rs:231:66: 231:78 help: run `rustc --explain E0308` to see a detailed explanation
- src/lib.rs:231:66: 231:78 note: expected type `&Box<std::ops::Fn(u32, u32) -> num::Complex<f64> + 'static>`
- src/lib.rs:231:66: 231:78 note: found type `&Box<std::ops::Fn(u32, u32) -> num::Complex<f64> + Send + Sync>`
- error: aborting due to previous error
- Build failed, waiting for other jobs to finish...
- error: Could not compile `julia-set`.
- pub fn sequential_image<F>(
- ...,
- interpolate: &Box<Fn(u32, u32) -> Complex64>,
- ...) -> ...
- sequential_image(width, height, &default_julia,
- &(interpolate as Box<Fn(u32, u32) -> Complex64>),
- threshold)
- pub fn sequential_image<F>(
- ...,
- interpolate: &Fn(u32, u32) -> Complex64,
- ...) -> ...
- sequential_image(width, height, &default_julia,
- &*interpolate,
- threshold)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement