Compare commits

...

3 Commits

Author SHA1 Message Date
6a37f26eaa ver: bump path (0.1.1) 2026-03-24 22:24:34 +01:00
2167ee28fd fix: make path resolution relative to project root
this was already how it mostly behaved but there seemed to be exceptions
like LSP warnings (in these tests themselves)
2026-03-24 22:24:14 +01:00
34b1140573 fix: oops print 2026-03-24 22:17:15 +01:00
3 changed files with 10 additions and 4 deletions

View File

@@ -1,7 +1,7 @@
[package]
name = "const-macros"
description = "Crate with some useful macros for const-time stuff"
version = "0.1.0"
version = "0.1.1"
edition = "2024"
license = "MIT"
repository = "https://git.javalsai.tuxcord.net/rust/const-macros"

View File

@@ -1,11 +1,10 @@
#![feature(proc_macro_value)]
use std::{fs::File, io::Read};
use std::{fs::File, io::Read, path::Path};
use proc_macro::{Delimiter, Group, Literal, Punct, TokenStream, TokenTree};
use sha2::Digest;
fn read_path_literal(input: TokenStream) -> String {
println!("{input:?}");
let mut input_iter = input.into_iter();
let path_token = input_iter.next().expect("expected a path");
assert!(input_iter.next().is_none(), "only expected one argument");
@@ -115,7 +114,10 @@ fn get_sha256sum(buf: &[u8]) -> [u8; 32] {
pub fn include_asset(input: TokenStream) -> TokenStream {
let path = read_path_literal(input);
let mut buf = Vec::new();
File::open(path)
let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR to be set");
File::open(Path::new(&manifest_dir).join(&path))
.expect("couldn't open file")
.read_to_end(&mut buf)
.expect("error reading file");

View File

@@ -27,6 +27,10 @@ pub mod file {
}
}
/// Similar to [`include_bytes!`], but it returns a lot more information about the file, like
/// its mime type, or its sha256sum (could be changed), all at compile time.
///
/// The path is relative to the package's root.
#[macro_export]
macro_rules! include_asset {
($path:literal) => {