What happens when I populate a ray with a vector2?

Earlier I was messing around with trying to understand touch input better and I decided to try and feed a Vector2 from the touch into a raycast in a similar manner to how I would with Input.mousePosition.

if (rayAtTouch(siteRay, out rayHit, touch.position))

bool rayAtTouch (Ray ray, out RaycastHit hit, Vector3 touchPoint) {
		ray = Camera.main.ScreenPointToRay(touchPoint);
		return Physics.Raycast(ray, out hit);
}

Here I thought the value of touch.Touch was a Vector2 (printing this to a debug object confirms this). Why does this actually work? Doesn’t Raycast require the ray to be supplied with a Vector3?

You can substitute Vector2 for Vector3, all it does is use the X and Y from the Vector2 with a Z of 0.