Streaming windowed sinc interpolation/resampling: trying to understand a Rust implementation I'm working on a fork of the Rust dasp library, which is intended to be a DSP toolkit that abstracts over samples/frames/signals, and contains a number of functions and tools that work with these. One such bit of functionality is a signal interpolation feature, this supposedly allows for on-the-fly lazy resampling of a signal using sinc resampling. The Rust code that does the heavy sinc work is found here: https://github.com/RustAudio/dasp/blob/master/dasp_interpolate/src/sinc/mod.rs
However, I'm a bit confused. Looking at previous asked questions on this site and other resources on sinc interpolation and resampling, I'm seeing some yellow flags:

I can't seem to find any other &quot;streaming&quot; implementations of sinc resampling: they usually require a fixed-size buffer of samples as input, produce a fixed-size buffer of interpolated samples as output, and don't yield interpolated values one at a time.
Other sinc implementations are significantly more complex in terms of their required parameters. For example, the r8brain resampler requires a cutoff frequency and an attenuation level in the constructor (link), both of which are nowhere to be seen in dasp's resampler/interpolator.
I'm not seeing how the resampled result is lowpass filtered.

I'm admittedly new to the world of DSP, so I'm not sure if this code is correct, and if not, I'd like to understand why and how to fix it as part of my fork.
This looks partially similar to the BASIC code in my Q&amp;D resampling cookbook here:  http://www.nicholson.com/rhn/dsp.html#3  which computes both the Sinc and the window (von Hann) on the fly (per sample).
But it appears that the .rs code is not determining the lowpass cutoff frequency (phi upper and lower) correctly.  It needs to know whether the resampling is up or down in frequency, so that the Sinc computation can use something below half the lesser of the two frequencies.
Computation of one new resampled sample at a time works just fine, as long as the rate change is fixed (or increases slightly), and the initial and ending transients (related to the Sinc window width (or depth?)) are ignored (or accepted as transients).