Comments (2)
I wonder what we think how important this feature is. I would like to have it in the language (also in the context of our discussion of structs allowed as transaction parameters), but I'm not very much missing that I cannot create structs and access fields without wrapper functions outside of the declaring module. So I'm lukewarm about the relevance, specifically as we concluded to deal with transaction structs on adapter side.
The background why am I asking this is that this not trivial to implement with the way file format is defined today. A StructDefinition is local to the module where a struct is defined, and the existing opcodes for making a struct and borrowing fields are tailored to the expectation that the struct is local to a module. (I happen to remember that it was not trivial to implement the Move Prover on top of file format -- specifications have access to private structs and fields -- we needed to create move-model to deal with this).
One can always work around the current restrictions by introducing public constructor and accessor functions. Maybe instead of supporting public fields, we should derive those functions automatically i.e. have a #[derive(..)]
attribute?
from move.
- I think that we should definitely have public/private structs. Particularly given how much type-driven programming we have in Move
- I'm agree with Wolfgang in that I'm not sure how important public/private field access is in the short term
- Long term I think it might be something we add, the biggest reason is for borrows.
- Imagine you want to do something like the following:
let f = &mut s.f; let g = &mut s.g; foo(f, g)
- This is not possible with public borrow_mut functions, as the borrow checker has no way of knowing that the function only borrows a specific field (this is lacking even in Rust FWIW, though I do think we might be able to do better if we wanted to)
- Imagine you want to do something like the following:
- We might also want to do it for public/private constructors in the same way that Rust supports them
- But we could also make this a source only feature, and there are several ways I could see exposing that
- I would also be fine adding fake public fields as a source only feature, and just not allowing
&mut
field borrows right away due to the limitation described above
from move.
Related Issues (20)
- [Bug] installation requires rustc 1.66.0 or newer HOT 2
- Update rust-toolchain.toml to latest version HOT 1
- cargo install failed due to toml_edit version HOT 3
- [Bug]: update rust version to 1.66.0 from 1.65.0 HOT 3
- [Dwarf] New language name for Move HOT 9
- [Bug] move-analyzer --branch sui-move server crash HOT 13
- [Feature Request] HOT 1
- [Bug]
- [Bug]
- aptos-move-analyzer 0.1.0 is not sync with the last version 2.4.0 HOT 1
- The sui-move-analyzer plug-in is installed in win10 vscode. Only code highlighting, no code error prompts. How to get code error prompts? HOT 2
- [Bug] cargo test on M2(Macbook pro) fails in docgen HOT 1
- Error parsing '[package]' section of manifest, VSCode HOT 3
- Unable to parse Move package manifest
- Error while following tutorial, Error message : ' found when reading file. Only ASCII printable characters, tabs (\t), and line endings (\n) are permitted.
- [Bug] Use openssl higher than 0.10.41
- Move analyzer parsing error in VS Code
- VSCode sui-move-analyzer plugin problem HOT 1
- [Bug]
- link to <https://github.com/MystenLabs/awesome-move>
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from move.