Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: detecting native-static-libs on Windows with Rust 1.71 fails when linking crate from a workspace #418

Closed
Be-ing opened this issue Jul 14, 2023 · 22 comments
Assignees
Labels
bug Something isn't working

Comments

@Be-ing
Copy link

Be-ing commented Jul 14, 2023

Current Behavior

Since updating to Rust 1.71, linking staticlibs is failing on Windows with missing symbol errors for the Rust standard library

Expected Behavior

build succeeds, as it did with Rust 1.70 and no changes to our code

Steps To Reproduce

build a staticlib crate with Rust 1.71 and link it to C++ dynamic library or executable

Environment

- OS: Windows
- CMake: 3.26.4
- CMake Generator: Ninja

CMake configure log with Debug log-level

-- Rust Toolchain: stable-x86_64-pc-windows-msvc
-- Rust toolchain stable-x86_64-pc-windows-msvc
-- Rust toolchain path C:\Users\runneradmin\.rustup\toolchains\stable-x86_64-pc-windows-msvc
-- Rust Target: x86_64-pc-windows-msvc
-- Parsed Target triple: arch: x86_64, vendor: pc, OS: windows, env: msvc
-- Parsed Target triple: arch: x86_64, vendor: pc, OS: windows, env: msvc
-- Determining required link libraries for target x86_64-pc-windows-msvc
-- Determining required native libraries - failed: 101.
-- Note: This is expected for Rust targets without std support

CMake Build step log

[16/74] Linking CXX shared library examples\qml_extension_plugin\plugin\core_qmlplugin.dll FAILED: examples/qml_extension_plugin/plugin/core_qmlplugin.dll examples/qml_extension_plugin/plugin/core_qmlplugin.lib cmd.exe /C "cd . && "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E vs_link_dll --intdir=examples\qml_extension_plugin\plugin\CMakeFiles\core_qmlplugin.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\mt.exe --manifests -- C:\PROGRA~1\MICROS~2\2022\ENTERP~1\VC\Tools\MSVC\1435~1.322\bin\HostX64\x64\link.exe /nologo examples\qml_extension_plugin\plugin\CMakeFiles\core_qmlplugin.dir\core_qmlplugin_autogen\mocs_compilation.cpp.obj examples\qml_extension_plugin\plugin\CMakeFiles\core_qmlplugin.dir\cpp\plugin.cpp.obj /out:examples\qml_extension_plugin\plugin\core_qmlplugin.dll /implib:examples\qml_extension_plugin\plugin\core_qmlplugin.lib /pdb:examples\qml_extension_plugin\plugin\core_qmlplugin.pdb /dll /version:0.0 /machine:x64 /INCREMENTAL:NO /WHOLEARCHIVE:examples\qml_extension_plugin\plugin\qml_extension_plugin.lib vcpkg_installed\x64-windows\lib\Qt5QuickControls2.lib vcpkg_installed\x64-windows\lib\Qt5Quick.lib vcpkg_installed\x64-windows\lib\Qt5Gui.lib vcpkg_installed\x64-windows\lib\Qt5QmlModels.lib vcpkg_installed\x64-windows\lib\Qt5Qml.lib vcpkg_installed\x64-windows\lib\Qt5Network.lib vcpkg_installed\x64-windows\lib\Qt5Core.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cmd.exe /C "cd /D C:\cxx-qt\build\examples\qml_extension_plugin\plugin && "C:\Program Files\PowerShell\7\pwsh.exe" -noprofile -executionpolicy Bypass -file C:/cxx-qt/vcpkg/scripts/buildsystems/msbuild/applocal.ps1 -targetBinary C:/cxx-qt/build/examples/qml_extension_plugin/plugin/core_qmlplugin.dll -installedDir C:/cxx-qt/build/vcpkg_installed/x64-windows/bin -OutVariable out"" LINK: command "C:\PROGRA~1\MICROS~2\2022\ENTERP~1\VC\Tools\MSVC\1435~1.322\bin\HostX64\x64\link.exe /nologo examples\qml_extension_plugin\plugin\CMakeFiles\core_qmlplugin.dir\core_qmlplugin_autogen\mocs_compilation.cpp.obj examples\qml_extension_plugin\plugin\CMakeFiles\core_qmlplugin.dir\cpp\plugin.cpp.obj /out:examples\qml_extension_plugin\plugin\core_qmlplugin.dll /implib:examples\qml_extension_plugin\plugin\core_qmlplugin.lib /pdb:examples\qml_extension_plugin\plugin\core_qmlplugin.pdb /dll /version:0.0 /machine:x64 /INCREMENTAL:NO /WHOLEARCHIVE:examples\qml_extension_plugin\plugin\qml_extension_plugin.lib vcpkg_installed\x64-windows\lib\Qt5QuickControls2.lib vcpkg_installed\x64-windows\lib\Qt5Quick.lib vcpkg_installed\x64-windows\lib\Qt5Gui.lib vcpkg_installed\x64-windows\lib\Qt5QmlModels.lib vcpkg_installed\x64-windows\lib\Qt5Qml.lib vcpkg_installed\x64-windows\lib\Qt5Network.lib vcpkg_installed\x64-windows\lib\Qt5Core.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:examples\qml_extension_plugin\plugin\core_qmlplugin.dll.manifest" failed (exit code 1120) with the following output: Creating library examples\qml_extension_plugin\plugin\core_qmlplugin.lib and object examples\qml_extension_plugin\plugin\core_qmlplugin.exp

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_WSAStartup referenced in function _ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17he6ccc121c87dd285E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_WSACleanup referenced in function _ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17he6ccc121c87dd285E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_freeaddrinfo referenced in function _ZN4core3ptr165drop_in_place$LT$core..iter..adapters..map..Map$LT$std..sys_common..net..LookupHost$C$std..net..socket_addr..resolve_socket_addr..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hd348d8c163534764E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_closesocket referenced in function _ZN4core3ptr51drop_in_place$LT$std..sys..windows..net..Socket$GT$17ha7d49ed65e4a62f0E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_GetUserProfileDirectoryW referenced in function _ZN3std3env8home_dir17hf92af1f80156d4acE

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_shutdown referenced in function _ZN3std3net3tcp9TcpStream8shutdown17h0b8a8a6018d89059E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_WSAGetLastError referenced in function _ZN3std3net3tcp9TcpStream8shutdown17h0b8a8a6018d89059E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_setsockopt referenced in function _ZN3std3net3udp9UdpSocket16set_read_timeout17h15a7851aeb6ff53bE

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_getsockopt referenced in function _ZN3std3net3udp9UdpSocket12read_timeout17h9796db3c7ecbd1daE

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_recv referenced in function _ZN3std3net3udp9UdpSocket4peek17h1d7606f6e84f09f8E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_WSARecv referenced in function ZN58$LT$std..net..tcp..TcpStream$u20$as$u20$std..io..Read$GT$13read_vectored17h9ab2ac35c7cf3d42E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_WSASend referenced in function ZN59$LT$std..net..tcp..TcpStream$u20$as$u20$std..io..Write$GT$14write_vectored17hd1c57acd0289d04eE

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_send referenced in function ZN63

$RF$std..net..tcp..TcpStream$u20$as$u20$std..io..Write$GT$5write17ha414950533429ff8E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_accept referenced in function _ZN3std3net3tcp11TcpListener6accept17hcf1e5bc3b39b6b30E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_ioctlsocket referenced in function _ZN3std3net3udp9UdpSocket15set_nonblocking17hecd30f572a8341b8E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_getpeername referenced in function _ZN3std3net3udp9UdpSocket9peer_addr17h9e4e6a1427982cabE

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_WSADuplicateSocketW referenced in function _ZN3std2os7windows2io6socket14BorrowedSocket18try_clone_to_owned17h710949ebc09f96a6E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_WSASocketW referenced in function _ZN3std2os7windows2io6socket14BorrowedSocket18try_clone_to_owned17h710949ebc09f96a6E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_getaddrinfo referenced in function _ZN3std3sys6common14small_c_string24run_with_cstr_allocating17h8e910c6130dc86eeE

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_NtCreateFile referenced in function _ZN3std3sys7windows2fs20open_link_no_reparse17ha8439d4ac49b3913E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_RtlNtStatusToDosError referenced in function _ZN3std3sys7windows2fs20open_link_no_reparse17ha8439d4ac49b3913E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_NtReadFile referenced in function _ZN3std3sys7windows6handle6Handle16synchronous_read17hfd3297a2d25b288dE

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_NtWriteFile referenced in function _ZN3std3sys7windows6handle6Handle17synchronous_write17h1f1222e834ac3046E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_connect referenced in function _ZN3std3sys7windows3net6Socket15connect_timeout17h94258e7dcc0f1783E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_select referenced in function _ZN3std3sys7windows3net6Socket15connect_timeout17h94258e7dcc0f1783E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_recvfrom referenced in function _ZN3std3sys7windows3net6Socket20recv_from_with_flags17hbe8c91ac0e41bfadE

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_BCryptGenRandom referenced in function _ZN3std3sys7windows4pipe9anon_pipe17h721e08ce9d308fa9E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_bind referenced in function _ZN3std10sys_common3net11TcpListener4bind17hf9dcb78187382003E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_listen referenced in function _ZN3std10sys_common3net11TcpListener4bind17hf9dcb78187382003E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_getsockname referenced in function _ZN3std10sys_common3net11TcpListener11socket_addr17h1dc61f139203ee41E

qml_extension_plugin.lib(std-f54c5a8dc7e7febf.std.1153952cb135a7f6-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_sendto referenced in function _ZN3std10sys_common3net9UdpSocket7send_to17h58a2b3e0b57e68ebE

examples\qml_extension_plugin\plugin\core_qmlplugin.dll : fatal error LNK1120: 31 unresolved externals
@Be-ing
Copy link
Author

Be-ing commented Jul 14, 2023

Adding ECHO_ERROR_VARIABLE and ECHO_OUTPUT_VARIABLE for the call to cargo rustc -- --print=native-static-libs reveals a curious error:

 'C:/Program Files/Microsoft Visual Studio/2022/Enterprise/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/bin/cmake.exe' '-E' 'env' 'CARGO_BUILD_RUSTC=C:/Users/runneradmin/.rustup/toolchains/stable-x86_64-pc-windows-msvc/bin/rustc.exe' 'C:/Users/runneradmin/.rustup/toolchains/stable-x86_64-pc-windows-msvc/bin/cargo.exe' 'rustc' '--verbose' '--color' 'never' '--target=x86_64-pc-windows-msvc' '--' '--print=native-static-libs'
error: failed to parse manifest at `C:\cxx-qt\build\corrosion\required_libs\Cargo.toml`
Caused by:
  error inheriting `version` from workspace root manifest's `workspace.package.version`
Caused by:
  `workspace.package.version` was not defined

I'm puzzled why this only affects Windows... 🤔

@Be-ing
Copy link
Author

Be-ing commented Jul 14, 2023

The generated Cargo.toml for the required_libs crate is:

[package]
name = "required_libs"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
[lib]
crate-type=["staticlib"]
[workspace]

I tried removing the empty [workspace] table, but then Cargo fails with:

 -- Determining required link libraries for target x86_64-pc-windows-msvc
'C:/Program Files/Microsoft Visual Studio/2022/Enterprise/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/bin/cmake.exe' '-E' 'env' 'CARGO_BUILD_RUSTC=C:/Users/runneradmin/.rustup/toolchains/stable-x86_64-pc-windows-msvc/bin/rustc.exe' 'C:/Users/runneradmin/.rustup/toolchains/stable-x86_64-pc-windows-msvc/bin/cargo.exe' 'rustc' '--verbose' '--color' 'never' '--target=x86_64-pc-windows-msvc' '--' '--print=native-static-libs'
error: current package believes it's in a workspace when it's not:
current:   C:\cxx-qt\build\corrosion\required_libs\Cargo.toml
workspace: C:\cxx-qt\Cargo.toml
this may be fixable by adding `build\corrosion\required_libs` to the `workspace.members` array of the manifest located at: C:\cxx-qt\Cargo.toml
Alternatively, to keep it out of the workspace, add the package to the `workspace.exclude` array, or add an empty `[workspace]` table to the package's manifest.
-- Determining required native libraries - failed: 101.

Is this a regression in Cargo??? 😕

@Be-ing
Copy link
Author

Be-ing commented Jul 14, 2023

Adding exclude = ["build/**"] to the workspace table of the root Cargo.toml of the workspace results in the same error as removing the [workspace] table in required_libs's Cargo.toml.

@Be-ing
Copy link
Author

Be-ing commented Jul 14, 2023

Creating the CMake build directory outside of the code repository works around the bug.

@Be-ing
Copy link
Author

Be-ing commented Jul 14, 2023

Upstream Cargo bug: rust-lang/cargo#12360

@jschwe
Copy link
Collaborator

jschwe commented Jul 15, 2023

Thanks for reporting! Could you test if adding the version field to the workspace table fixes the error?

jschwe added a commit that referenced this issue Jul 15, 2023
@Be-ing
Copy link
Author

Be-ing commented Jul 15, 2023

The workspace root's Cargo.toml already specifies the version:

[workspace.package]
edition = "2021"
license = "MIT OR Apache-2.0"
repository = "https://github.com/KDAB/cxx-qt/"
version = "0.5.3"

I also tried specifying a version in the [workspace] table of required_libs' Cargo.toml, which failed with the same "current package believes it's in a workspace when it's not" error.

@jschwe
Copy link
Collaborator

jschwe commented Jul 15, 2023

I tried reproducing this locally and on my mac M1 the workspace test reproduces your issue with Rust 1.71 if I add a version key to workspace.package. The test itself doesn't fail (presumably because it is so simple, that none of the libraries are actually required at link time), but determining the linker libraries fails. In CI with Rust 1.71 it seems to work though, which is confusing...

See here for an example which uses windows + Rust 1.71 and has a version specified: https://github.com/corrosion-rs/corrosion/actions/runs/5559992612/jobs/10156620168?pr=419

@Be-ing
Copy link
Author

Be-ing commented Jul 15, 2023

Curious, I haven't seen this bug happen on macOS 🤔

@Be-ing Be-ing changed the title [Bug]: detecting native-static-libs on Windows with Rust 1.71 fails [Bug]: detecting native-static-libs on Windows with Rust 1.71 fails when linking crate from a workspace Jul 15, 2023
@jschwe
Copy link
Collaborator

jschwe commented Jul 15, 2023

We are using cargo new --lib required_libs to let cargo generate a library crate for us. It appears that if there is a workspace in a parent directory, cargo will now write version.workspace = true instead of version = "0.1.0" into the Cargo.toml.

I find this behavior a bit strange, since cargo also outputs the warning current package believes it's in a workspace when it's not:.

But okay, we can fix this on the corrosion side by doing a search and replace.

@Be-ing
Copy link
Author

Be-ing commented Jul 15, 2023

Huh, I see version = "0.1.0" in the generated Cargo.toml, at least on Linux. When I manually edit it to version.workspace = true, I can reproduce the error message:

required_libs on  main [?] via 🦀 v1.72.0-dev 
❯ cargo build
error: failed to parse manifest at `/home/be/sw/cxx-qt/build/corrosion/required_libs/Cargo.toml`

Caused by:
  error inheriting `version` from workspace root manifest's `workspace.package.version`

Caused by:
  `workspace.package.version` was not defined

Does cargo new result in a different Cargo.toml on Windows??

@jschwe
Copy link
Collaborator

jschwe commented Jul 15, 2023

Huh, I see version = "0.1.0" in the #418 (comment), at least on Linux.

Maybe there are more requirements here. I also don't see the failure in our CI for any platform, even though it should fail after I edited the test.

@Be-ing
Copy link
Author

Be-ing commented Jul 15, 2023

But okay, we can fix this on the corrosion side by doing a search and replace.

Or supply the full Cargo.toml file to use instead of generating it then using CMake to manipulate the text file.

jschwe added a commit that referenced this issue Jul 15, 2023
Be-ing added a commit to Be-ing/cxx-qt that referenced this issue Jul 15, 2023
to work around corrosion-rs/corrosion#418
with Rust 1.71
@Be-ing
Copy link
Author

Be-ing commented Jul 15, 2023

I tested 89841b2 and it successfully works around the issue. Can you tag a new release with this fix?

Be-ing added a commit to Be-ing/cxx-qt that referenced this issue Jul 16, 2023
@Be-ing
Copy link
Author

Be-ing commented Jul 16, 2023

The fix was released in Corrosion 0.4.2. However, if cargo new will soon modify the workspace's Cargo.toml, Corrosion should not use cargo new at all.

@Be-ing Be-ing closed this as completed Jul 16, 2023
ahayzen-kdab pushed a commit to KDAB/cxx-qt that referenced this issue Jul 17, 2023
@t348575
Copy link

t348575 commented Aug 30, 2023

@Be-ing @jschwe Hey I've got a rust project and I've got all the same symptoms as this... But I don't get from the issue what exactly is the root cause or how to rectify it... because I'm not creating any cargo.toml files via cmake or anything like you are. I've got a workspace file, a and a few crates. One of these crates is used as a static library (windows & linux but only windows is showing these issues). I'm using the 2021 edition everywhere... I've only specified [workspace.members]. Do you have any suggestions?

@jschwe
Copy link
Collaborator

jschwe commented Aug 30, 2023

Are you using corrosion and if yes which version?

@t348575
Copy link

t348575 commented Aug 30, 2023

Nope nothing to do with corrosion, I ran into this issue, and only found two instances online, this issue and this.

@jschwe
Copy link
Collaborator

jschwe commented Aug 30, 2023

Then you are most likely responsible yourself for linking the required libraries into the executable that links the rust static library. Rust 1.71 added more libraries that need to be linked on windows, so you need to check where you added those libraries and add the missings ones.

@kgrech
Copy link

kgrech commented Oct 12, 2023

@Be-ing why to call cargo new at all?

Would not

rustc --crate-type staticlib --print=native-static-libs lib.rs

print the same output, where lib.rs is empty file?

@Be-ing
Copy link
Author

Be-ing commented Oct 12, 2023

cargo new is not used anymore since #422.

@Be-ing
Copy link
Author

Be-ing commented Feb 13, 2024

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants