This *should* be all I need for the 0.12 upgrade...

main
Elijah Voigt 2 years ago
parent eca7e95e10
commit 0a79c8a53a

183
Cargo.lock generated

@ -431,6 +431,7 @@ dependencies = [
"futures-io",
"futures-lite 1.13.0",
"js-sys",
"notify-debouncer-full",
"parking_lot",
"ron",
"serde",
@ -1840,6 +1841,27 @@ dependencies = [
"simd-adler32",
]
[[package]]
name = "file-id"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6584280525fb2059cba3db2c04abf947a1a29a45ddae89f3870f8281704fafc9"
dependencies = [
"windows-sys 0.48.0",
]
[[package]]
name = "filetime"
version = "0.2.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd"
dependencies = [
"cfg-if",
"libc",
"redox_syscall 0.4.1",
"windows-sys 0.52.0",
]
[[package]]
name = "fixedbitset"
version = "0.4.2"
@ -1904,6 +1926,15 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b"
[[package]]
name = "fsevent-sys"
version = "4.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2"
dependencies = [
"libc",
]
[[package]]
name = "futures-core"
version = "0.3.29"
@ -1977,7 +2008,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "178769da179a47b187837d1ab2b5b9b684a21180166a77a4ca37e7e58ee3833d"
dependencies = [
"core-foundation",
"inotify",
"inotify 0.10.2",
"io-kit-sys",
"js-sys",
"libc",
@ -2234,6 +2265,17 @@ version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a"
[[package]]
name = "inotify"
version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff"
dependencies = [
"bitflags 1.3.2",
"inotify-sys",
"libc",
]
[[package]]
name = "inotify"
version = "0.10.2"
@ -2278,9 +2320,9 @@ dependencies = [
[[package]]
name = "itoa"
version = "1.0.9"
version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
[[package]]
name = "jni"
@ -2351,6 +2393,26 @@ dependencies = [
"pkg-config",
]
[[package]]
name = "kqueue"
version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c"
dependencies = [
"kqueue-sys",
"libc",
]
[[package]]
name = "kqueue-sys"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b"
dependencies = [
"bitflags 1.3.2",
"libc",
]
[[package]]
name = "ktx2"
version = "0.3.0"
@ -2651,6 +2713,39 @@ version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51"
[[package]]
name = "notify"
version = "6.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
dependencies = [
"bitflags 2.4.1",
"crossbeam-channel",
"filetime",
"fsevent-sys",
"inotify 0.9.6",
"kqueue",
"libc",
"log",
"mio",
"walkdir",
"windows-sys 0.48.0",
]
[[package]]
name = "notify-debouncer-full"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49f5dab59c348b9b50cf7f261960a20e389feb2713636399cd9082cd4b536154"
dependencies = [
"crossbeam-channel",
"file-id",
"log",
"notify",
"parking_lot",
"walkdir",
]
[[package]]
name = "ntapi"
version = "0.4.1"
@ -2841,9 +2936,9 @@ dependencies = [
[[package]]
name = "once_cell"
version = "1.18.0"
version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
[[package]]
name = "orbclient"
@ -3950,6 +4045,15 @@ dependencies = [
"windows-targets 0.48.5",
]
[[package]]
name = "windows-sys"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
dependencies = [
"windows-targets 0.52.0",
]
[[package]]
name = "windows-targets"
version = "0.42.2"
@ -3980,6 +4084,21 @@ dependencies = [
"windows_x86_64_msvc 0.48.5",
]
[[package]]
name = "windows-targets"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
dependencies = [
"windows_aarch64_gnullvm 0.52.0",
"windows_aarch64_msvc 0.52.0",
"windows_i686_gnu 0.52.0",
"windows_i686_msvc 0.52.0",
"windows_x86_64_gnu 0.52.0",
"windows_x86_64_gnullvm 0.52.0",
"windows_x86_64_msvc 0.52.0",
]
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.42.2"
@ -3992,6 +4111,12 @@ version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
[[package]]
name = "windows_aarch64_msvc"
version = "0.42.2"
@ -4004,6 +4129,12 @@ version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
[[package]]
name = "windows_i686_gnu"
version = "0.42.2"
@ -4016,6 +4147,12 @@ version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
[[package]]
name = "windows_i686_gnu"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
[[package]]
name = "windows_i686_msvc"
version = "0.42.2"
@ -4028,6 +4165,12 @@ version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
[[package]]
name = "windows_i686_msvc"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
[[package]]
name = "windows_x86_64_gnu"
version = "0.42.2"
@ -4040,6 +4183,12 @@ version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
[[package]]
name = "windows_x86_64_gnu"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.42.2"
@ -4052,6 +4201,12 @@ version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
[[package]]
name = "windows_x86_64_msvc"
version = "0.42.2"
@ -4064,6 +4219,12 @@ version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
[[package]]
name = "winit"
version = "0.28.7"
@ -4096,9 +4257,9 @@ dependencies = [
[[package]]
name = "winnow"
version = "0.5.25"
version = "0.5.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7e87b8dfbe3baffbe687eef2e164e32286eff31a5ee16463ce03d991643ec94"
checksum = "b67b5f0a4e7a27a64c651977932b9dc5667ca7fc31ac44b03ed37a0cf42fdfff"
dependencies = [
"memchr",
]
@ -4128,18 +4289,18 @@ checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a"
[[package]]
name = "zerocopy"
version = "0.7.29"
version = "0.7.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d075cf85bbb114e933343e087b92f2146bac0d55b534cbb8188becf0039948e"
checksum = "306dca4455518f1f31635ec308b6b3e4eb1b11758cefafc782827d0aa7acb5c7"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.7.29"
version = "0.7.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "86cd5ca076997b97ef09d3ad65efe811fa68c9e874cb636ccb211223a813b0c2"
checksum = "be912bf68235a88fbefd1b73415cb218405958d1655b2ece9035a19920bdf6ba"
dependencies = [
"proc-macro2",
"quote",

@ -6,7 +6,7 @@ build = "build.rs"
[dependencies]
bevy_fmod = { branch = "update-0.12", git = "https://github.com/Salzian/bevy_fmod", features = ["live-update"] }
bevy = { version = "0.12", features = ["jpeg", "hdr", "serialize"] }
bevy = { version = "0.12", features = ["jpeg", "hdr", "serialize", "file_watcher"] }
serde = "1"
toml = { version = "0.8", features = ["parse"] }
anyhow = "*"

@ -68,7 +68,7 @@ fn audio_trigger(
.expect("Load tweakfile");
debug!("Audio tweaks: {:?}", tweak.audio);
let state = display_state.get();
events.iter().for_each(|event| {
events.read().for_each(|event| {
let aud = match event {
AudioEvent::MainMusic | AudioEvent::StopMainMusic => tweak.audio.music.main.clone(),
AudioEvent::MenuSelect => tweak.audio.menu.select.clone(),
@ -95,7 +95,7 @@ fn audio_trigger(
if let Ok(event_description) = studio.0.get_event(event_str.as_str()) {
let audio_source = AudioSource::new(event_description);
// We are stopping a playing event
match event {
match event {
// Find and stop playing instances of idle audio
AudioEvent::StopIdle => {
sources
@ -164,4 +164,4 @@ struct PlaySettings {
idle: String,
#[serde(default)]
invalid: String,
}
}

@ -1,3 +1,4 @@
use bevy::asset::AsyncReadExt;
use std::str::Utf8Error;
use thiserror::Error;
@ -36,8 +37,10 @@ pub struct CreditsText {
#[derive(Debug, Error)]
enum CreditsError {
#[error("Failed to read file")]
IO(#[from] std::io::Error),
Parse(#[from] Utf8Error),
#[error("Failed to decode file")]
Decode(#[from] Utf8Error),
}
#[derive(Default)]
@ -51,13 +54,14 @@ impl AssetLoader for CreditsTextLoader {
fn load<'a>(
&'a self,
reader: &'a mut Reader,
settings: &'a Self::Settings,
load_context: &'a mut LoadContext,
_settings: &'a Self::Settings,
_load_context: &'a mut LoadContext,
) -> BoxedFuture<'a, Result<Self::Asset, Self::Error>> {
Box::pin(async move {
let mut bytes = Vec::new();
reader.read_to_end(&mut bytes).await?;
parse_credits(bytes.as_slice())
let result = parse_credits(bytes.as_slice())?;
Ok(result)
})
}
@ -123,13 +127,13 @@ fn update_credits(
credits_texts: Res<Assets<CreditsText>>,
mut query: Query<(&mut Text, &Handle<CreditsText>)>,
) {
reader.iter().for_each(|event| match event {
reader.read().for_each(|event| match event {
AssetEvent::Added { id }
| AssetEvent::LoadedWithDependencies { id }
| AssetEvent::Modified { id } => {
query
.iter_mut()
.filter(|(_, this_handle)| id == (*this_handle).id())
.filter(|(_, this_handle)| *id == (*this_handle).id())
.for_each(|(mut text, this_handle)| {
if let Some(credits_text) = credits_texts.get(this_handle) {
text.sections = credits_text.sections.clone();

@ -62,7 +62,7 @@ fn toggle_debug_mode(
mut commands: Commands,
) {
events
.iter()
.read()
.filter(
|KeyboardInput {
state, key_code, ..

@ -176,7 +176,7 @@ fn update_background(
mut events: EventReader<WindowResized>,
) {
events
.iter()
.read()
.for_each(|&WindowResized { width, height, .. }| {
sprites.iter_mut().for_each(|mut sprite| {
sprite.custom_size = Some(Vec2 {

@ -4,6 +4,7 @@ use crate::{
tweak::Tweakfile,
};
use bevy::{
animation::RepeatAnimation,
core_pipeline::{
experimental::taa::{TemporalAntiAliasPlugin, TemporalAntiAliasSettings},
prepass::MotionVectorPrepass,
@ -123,23 +124,23 @@ fn load_assets(
mut materials: ResMut<Assets<StandardMaterial>>,
tweaks: Res<Assets<Tweakfile>>,
) {
let handle: Handle<Tweakfile> = server.load("martian.tweak.toml");
let tweak = tweaks.get(&handle).expect("Load tweakfile");
let hitbox_shape = meshes.add(shape::Box::new(1.0, 0.1, 1.0).into());
let hitbox_material = materials.add(StandardMaterial {
base_color: Color::NONE,
perceptual_roughness: 0.0,
reflectance: 0.0,
alpha_mode: AlphaMode::Blend,
..default()
});
commands.insert_resource(AssetsMap {
models: server.load(tweak.display3d.models.assets_file.as_str()),
skybox: server.load(tweak.display3d.models.skybox_file.as_str()),
hitbox_shape,
hitbox_material,
});
let handle = server.load("martian.tweak.toml");
if let Some(tweak) = tweaks.get(&handle) {
let hitbox_shape = meshes.add(shape::Box::new(1.0, 0.1, 1.0).into());
let hitbox_material = materials.add(StandardMaterial {
base_color: Color::NONE,
perceptual_roughness: 0.0,
reflectance: 0.0,
alpha_mode: AlphaMode::Blend,
..default()
});
commands.insert_resource(AssetsMap {
models: server.load(tweak.display3d.models.assets_file.as_str().clone()),
skybox: server.load(tweak.display3d.models.skybox_file.as_str().clone()),
hitbox_shape,
hitbox_material,
});
}
}
/// Initialize the 3d board
@ -272,14 +273,14 @@ fn update_tweaks(
With<Display3d>,
>,
tweaks: Res<Assets<Tweakfile>>,
mut lights: Query<
(
Option<&mut SpotLight>,
Option<&mut PointLight>,
Option<&mut DirectionalLight>,
),
Or<(With<SpotLight>, With<PointLight>, With<DirectionalLight>)>,
>,
// mut lights: Query<
// (
// Option<&mut SpotLight>,
// Option<&mut PointLight>,
// Option<&mut DirectionalLight>,
// ),
// Or<(With<SpotLight>, With<PointLight>, With<DirectionalLight>)>,
// >,
mut commands: Commands,
server: Res<AssetServer>,
) {
@ -310,11 +311,11 @@ fn update_tweaks(
}
},
);
lights
.iter_mut()
.for_each(|(mut spot, mut point, mut direction)| {
// Depending on the light, set the scalar tweak
});
// lights
// .iter_mut()
// .for_each(|(mut spot, mut point, mut direction)| {
// // Depending on the light, set the scalar tweak
// });
}
}
@ -453,7 +454,7 @@ fn move_camera(
mut events: EventReader<MouseMotion>,
mut camera: Query<&mut Transform, (With<Display3d>, With<Camera>)>,
) {
events.iter().for_each(|MouseMotion { delta }| {
events.read().for_each(|MouseMotion { delta }| {
if buttons.pressed(MouseButton::Left) {
camera.iter_mut().for_each(|mut t| {
t.rotate_around(Vec3::ZERO, Quat::from_rotation_y(delta.x / 256.0));
@ -468,7 +469,7 @@ fn mouse_zoom(
mut events: EventReader<MouseWheel>,
mut camera: Query<&mut Transform, (With<Display3d>, With<Camera>)>,
) {
events.iter().for_each(|MouseWheel { unit, y, .. }| {
events.read().for_each(|MouseWheel { unit, y, .. }| {
camera.iter_mut().for_each(|mut t| {
match unit {
MouseScrollUnit::Line => {
@ -619,7 +620,7 @@ fn select(
mut selections: EventWriter<game::Selection>,
) {
events
.iter()
.read()
.filter(|ev| ev.state == ButtonState::Pressed)
.for_each(|_| {
windows.iter().for_each(|window| {
@ -741,7 +742,7 @@ fn remove_valid_move_entity(
valid_moves: Query<Entity, With<game::ValidMove>>,
mut commands: Commands,
) {
events.iter().for_each(|_| {
events.read().for_each(|_| {
valid_moves.iter().for_each(|entity| {
commands.entity(entity).despawn_recursive();
});
@ -782,7 +783,7 @@ fn pick_up(
idle.expect("Idle animation").clone(),
Duration::from_secs_f32(1.5),
)
.repeat();
.set_repeat(RepeatAnimation::Forever);
}
})
});
@ -800,7 +801,7 @@ fn put_down(
) {
let handle: Handle<Tweakfile> = server.load("martian.tweak.toml");
let tweak = tweaks.get(&handle).expect("Load tweakfile");
events.iter().for_each(|entity| {
events.read().for_each(|entity| {
if let Ok(_piece) = query.get_mut(entity) {
let gltf = gltfs.get(&assets_map.models).expect("Load GLTF content");
children.iter_descendants(entity).for_each(|child| {
@ -814,7 +815,7 @@ fn put_down(
animation.expect("PutDown Animation").clone(),
Duration::from_secs_f32(0.75),
)
.stop_repeating();
.set_repeat(RepeatAnimation::Never);
}
})
}

@ -426,7 +426,7 @@ pub(crate) fn update_board(
mut commands: Commands,
mut played: Local<bool>,
) {
events.iter().for_each(|Move { from, to, .. }| {
events.read().for_each(|Move { from, to, .. }| {
pieces.iter_mut().for_each(|(entity, mut index)| {
if *index == *from {
match to {
@ -484,7 +484,7 @@ fn handle_selection(
mut done: Local<bool>, // Tracks if moves/audio submitted already even if multiple pieces (2d/3d) are moved.
mut latest: Local<BoardIndex>, // Tracks the last one worked on
) {
selections.iter().for_each(|Selection(index)| {
selections.read().for_each(|Selection(index)| {
// Skip indexes already processed
if *index != *latest {
// Set the latest index to the current index

@ -57,17 +57,14 @@ fn loading(
tweakfile: Res<Assets<tweak::Tweakfile>>,
mut next_state: ResMut<NextState<GameState>>,
) {
let s = sprites.iter().len() > 0
let s = (!sprites.is_empty())
&& sprites
.iter()
.ids()
.all(|id| server.is_loaded_with_dependencies(id));
let g = gltfs.iter().len() > 0
&& gltfs
.iter()
.all(|id| server.is_loaded_with_dependencies(id));
let t = tweakfile.iter().len() > 0
let g = (!gltfs.is_empty()) && gltfs.ids().all(|id| server.is_loaded_with_dependencies(id));
let t = (!tweakfile.is_empty())
&& tweakfile
.iter()
.ids()
.all(|id| server.is_loaded_with_dependencies(id));
if s && g && t {

@ -53,10 +53,6 @@ fn main() {
..default()
}),
..default()
})
.set(AssetPlugin {
watch_for_changes: ChangeWatcher::with_delay(Duration::from_millis(200)),
..default()
}),
);
app.add_plugins(credits::CreditsPlugin);

@ -161,7 +161,7 @@ pub(crate) fn exit_to_menu(
mut next_state: ResMut<NextState<GameState>>,
) {
events
.iter()
.read()
.filter(
|KeyboardInput {
key_code, state, ..

@ -1,10 +1,12 @@
use crate::prelude::*;
use bevy::asset::AsyncReadExt;
use bevy::{
asset::{io::Reader, AssetLoader, LoadContext},
reflect::{TypePath, TypeUuid},
utils::BoxedFuture,
};
use serde::Deserialize;
use std::str::Utf8Error;
use thiserror::Error;
/// A Tweakfile is resource used to specify game customization like asset names,
@ -15,8 +17,8 @@ impl Plugin for TweakPlugin {
fn build(&self, app: &mut App) {
app.add_systems(OnEnter(GameState::Loading), load_tweakfile);
app.add_asset::<Tweakfile>()
.init_asset_loader::<TweakfileLoader>();
app.register_asset_loader(TweakfileLoader)
.init_asset::<Tweakfile>();
}
}
@ -45,7 +47,11 @@ pub struct TweakfileLoader;
#[derive(Debug, Error)]
enum TweakfileError {
#[error("Failed to read file")]
IO(#[from] std::io::Error),
#[error("Failed to decode file")]
Decode(#[from] Utf8Error),
#[error("Failed to parse file")]
Parse(#[from] toml::de::Error),
}
@ -57,14 +63,15 @@ impl AssetLoader for TweakfileLoader {
fn load<'a>(
&'a self,
reader: &'a mut Reader,
settings: &'a Self::Settings,
load_context: &'a mut LoadContext,
_settings: &'a Self::Settings,
_load_context: &'a mut LoadContext,
) -> BoxedFuture<'a, Result<Self::Asset, Self::Error>> {
Box::pin(async move {
let mut bytes = Vec::new();
reader.read_to_end(&mut bytes).await?;
let s = std::str::from_utf8(bytes.as_slice())?;
toml::from_str::<Tweakfile>(s)?
let result = toml::from_str::<Tweakfile>(s)?;
Ok(result)
})
}

Loading…
Cancel
Save