Perlin noise algorithm artifacts

Hi there, first of all, I'm quite new to rust, and am not sure if this is even the right forum to post this on, so sincere apologies in advance.
I created a perlin noise algorithm, and it is producing a few artifacts along the x and y axis as can be noted in the image below.


I believe that this comes from my "sampling" algorithm. It works like so:
I take the four corners of the square/rectangle I'm processing and interpolate along the y axis to get a start and an end and then interpolate along the x axis.
Also, this apparently doesn't work for non square dimensions (change the IMG_SIZE_X and IMG_SIZE_Y constants in main.rs to be different), but I'll tackle one problem at a time.
Does anyone have any idea as to why this doesn't work? thanks!

Ps. If you want to quickly test this, use the gitpod button at the root of my repo and run cargo run in the terminal that appears in the web.

Perlin is known to generate axis-aligned artifacts.
I'd say maybe try Simplex Noise instead (which has less artifacts, at least for low dimensions). However, if you manage to enhance the sampling well enough so that Perlin isn't as artifacty as it usually is, I think that'd be fantastic.

(Also: yes, you might be right. This is probably not the best forum to ask about procedural noise. However, there aren't that many places on the internet where you can have a conversation about it. If you want, hit me with a DM and I'll do my best to help you!)

Thank you so much for the fast reply! I will look into simplex noise!