pub async fn upload(
client: &DriveClient,
opts: &UploadOptions,
rules: &[FolderPermissionRule],
) -> UploadOutcomeExpand description
Uploads opts.content as opts.name inside opts.parent_folder_id,
gated by rules. See the module doc for why there is no separate
upload-side size check here — the caller already did it.
Every real (non-dry-run) attempt is logged; a --dry-run preview never
is, matching create/move’s existing precedent.