fn new(path: impl Into<String> + std::fmt::Display) -> Self {
        Self {
            path: path.to_string(),
            // Because of the scope disposer return type, this isn't as trivial as an empty function
            view: Box::new(|_, _, _, _| Ok((View::empty(), create_scope(|_| {})))),
            // Unlike `template`, this may not be set at all (especially in very simple apps)
            #[cfg(engine)]
            head: None,
            #[cfg(engine)]
            set_headers: None,
            #[cfg(engine)]
            get_build_paths: None,
            #[cfg(engine)]
            incremental_generation: false,
            #[cfg(engine)]
            get_build_state: None,
            #[cfg(engine)]
            get_request_state: None,
            #[cfg(engine)]
            should_revalidate: None,
            #[cfg(engine)]
            revalidate_after: None,
            #[cfg(engine)]
            amalgamate_states: None,
            // There is no mechanism to set this to `true`, except through the `Capsule` struct
            is_capsule: false,
            can_be_rescheduled: false,
        }
    }
An internal creator for new inner templates. This is wrapped by
`Template::build` and `Capsule::build`.
packages/perseus/src/template/core/mod.rs