Conversely, one company I worked for did have us provide candidates thorough feedback, though that was only for those who didn't pass from a code challenge to an interview. Perhaps the hiring managers have them feedback, I'm not sure.
PS: the code challenge we gave was carefully put together so as to both be reasonably quick to complete for a skilled developer, but be vague enough in requirements to not have a single answer that could be copy-pasted from a Google search. For anyone who didn't pass, I'd typically write two to three pages, focused entirely on objective metrics, and online resources for further learning should the candidate choose to apply again in the future. We didn't use it as a binary yes / no test, but to inform the discussion we would have in the in-person interview assuming the candidate had a sufficient level of skill.
"We found someone more qualified. Thank you for your interest."
I thought that it was the other way around. You need to have always ready the reasons why a candidate has been rejected and give them on request. Otherwise, they can sue you as your reasons are not clean and transparent.
But, I guess that this depends on the country's laws.