diff --git a/assets/index.72ee88b2.js b/assets/index.fe1ddd9a.js similarity index 87% rename from assets/index.72ee88b2.js rename to assets/index.fe1ddd9a.js index bfa9945f..88339b9c 100644 --- a/assets/index.72ee88b2.js +++ b/assets/index.fe1ddd9a.js @@ -29,8 +29,8 @@ `+o[u].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=u&&0<=a);break}}}finally{ci=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?or(e):""}function kf(e){switch(e.tag){case 5:return or(e.type);case 16:return or("Lazy");case 13:return or("Suspense");case 19:return or("SuspenseList");case 0:case 2:case 15:return e=fi(e.type,!1),e;case 11:return e=fi(e.type.render,!1),e;case 1:return e=fi(e.type,!0),e;default:return""}}function Vi(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case bn:return"Fragment";case An:return"Portal";case zi:return"Profiler";case Fu:return"StrictMode";case Ui:return"Suspense";case Hi:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case ts:return(e.displayName||"Context")+".Consumer";case es:return(e._context.displayName||"Context")+".Provider";case zu:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Uu:return t=e.displayName||null,t!==null?t:Vi(e.type)||"Memo";case Nt:t=e._payload,e=e._init;try{return Vi(e(t))}catch{}}return null}function Cf(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Vi(t);case 8:return t===Fu?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Gt(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function rs(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function xf(e){var t=rs(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(u){r=""+u,i.call(this,u)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(u){r=""+u},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Hr(e){e._valueTracker||(e._valueTracker=xf(e))}function os(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=rs(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function vo(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Wi(e,t){var n=t.checked;return se({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Bl(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Gt(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function is(e,t){t=t.checked,t!=null&&ju(e,"checked",t,!1)}function $i(e,t){is(e,t);var n=Gt(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Ki(e,t.type,n):t.hasOwnProperty("defaultValue")&&Ki(e,t.type,Gt(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Ql(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Ki(e,t,n){(t!=="number"||vo(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var ir=Array.isArray;function On(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=Vr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function yr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var ar={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Pf=["Webkit","ms","Moz","O"];Object.keys(ar).forEach(function(e){Pf.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ar[t]=ar[e]})});function ss(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||ar.hasOwnProperty(e)&&ar[e]?(""+t).trim():t+"px"}function cs(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=ss(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var If=se({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Gi(e,t){if(t){if(If[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(S(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(S(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(S(61))}if(t.style!=null&&typeof t.style!="object")throw Error(S(62))}}function Xi(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var qi=null;function Hu(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Zi=null,Mn=null,Ln=null;function zl(e){if(e=Qr(e)){if(typeof Zi!="function")throw Error(S(280));var t=e.stateNode;t&&(t=Yo(t),Zi(e.stateNode,e.type,t))}}function fs(e){Mn?Ln?Ln.push(e):Ln=[e]:Mn=e}function ds(){if(Mn){var e=Mn,t=Ln;if(Ln=Mn=null,zl(e),t)for(e=0;e>>=0,e===0?32:31-(Ff(e)/zf|0)|0}var Wr=64,$r=4194304;function ur(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Eo(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,o=e.suspendedLanes,i=e.pingedLanes,u=n&268435455;if(u!==0){var a=u&~o;a!==0?r=ur(a):(i&=u,i!==0&&(r=ur(i)))}else u=n&~o,u!==0?r=ur(u):i!==0&&(r=ur(i));if(r===0)return 0;if(t!==0&&t!==r&&(t&o)===0&&(o=r&-r,i=t&-t,o>=i||o===16&&(i&4194240)!==0))return t;if((r&4)!==0&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Nr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-dt(t),e[t]=n}function Wf(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=cr),Gl=String.fromCharCode(32),Xl=!1;function Rs(e,t){switch(e){case"keyup":return yd.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Os(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Sn=!1;function Ad(e,t){switch(e){case"compositionend":return Os(t);case"keypress":return t.which!==32?null:(Xl=!0,Gl);case"textInput":return e=t.data,e===Gl&&Xl?null:e;default:return null}}function bd(e,t){if(Sn)return e==="compositionend"||!Xu&&Rs(e,t)?(e=Ts(),lo=Yu=Ft=null,Sn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=ta(n)}}function Bs(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Bs(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Qs(){for(var e=window,t=vo();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=vo(e.document)}return t}function qu(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function Dd(e){var t=Qs(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Bs(n.ownerDocument.documentElement,n)){if(r!==null&&qu(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=n.textContent.length,i=Math.min(r.start,o);r=r.end===void 0?i:Math.min(r.end,o),!e.extend&&i>r&&(o=r,r=i,i=o),o=na(n,i);var u=na(n,r);o&&u&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==u.node||e.focusOffset!==u.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(u.node,u.offset)):(t.setEnd(u.node,u.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,En=null,iu=null,dr=null,uu=!1;function ra(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;uu||En==null||En!==vo(r)||(r=En,"selectionStart"in r&&qu(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),dr&&kr(dr,r)||(dr=r,r=xo(iu,"onSelect"),0xn||(e.current=du[xn],du[xn]=null,xn--)}function te(e,t){xn++,du[xn]=e.current,e.current=t}var Xt={},Ie=Zt(Xt),je=Zt(!1),dn=Xt;function Fn(e,t){var n=e.type.contextTypes;if(!n)return Xt;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},i;for(i in n)o[i]=t[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function Fe(e){return e=e.childContextTypes,e!=null}function Io(){oe(je),oe(Ie)}function ca(e,t,n){if(Ie.current!==Xt)throw Error(S(168));te(Ie,t),te(je,n)}function Ks(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(S(108,Cf(e)||"Unknown",o));return se({},n,r)}function To(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Xt,dn=Ie.current,te(Ie,e),te(je,je.current),!0}function fa(e,t,n){var r=e.stateNode;if(!r)throw Error(S(169));n?(e=Ks(e,t,dn),r.__reactInternalMemoizedMergedChildContext=e,oe(je),oe(Ie),te(Ie,e)):oe(je),te(je,n)}var Et=null,Jo=!1,ki=!1;function Ys(e){Et===null?Et=[e]:Et.push(e)}function Hd(e){Jo=!0,Ys(e)}function en(){if(!ki&&Et!==null){ki=!0;var e=0,t=Z;try{var n=Et;for(Z=1;e>=u,o-=u,Ct=1<<32-dt(t)+o|n<x?(C=b,b=null):C=b.sibling;var T=p(d,b,_[x],w);if(T===null){b===null&&(b=C);break}e&&b&&T.alternate===null&&t(d,b),f=i(T,f,x),E===null?A=T:E.sibling=T,E=T,b=C}if(x===_.length)return n(d,b),ie&&rn(d,x),A;if(b===null){for(;x<_.length;x++)b=g(d,_[x],w),b!==null&&(f=i(b,f,x),E===null?A=b:E.sibling=b,E=b);return ie&&rn(d,x),A}for(b=r(d,b);x<_.length;x++)C=h(b,d,x,_[x],w),C!==null&&(e&&C.alternate!==null&&b.delete(C.key===null?x:C.key),f=i(C,f,x),E===null?A=C:E.sibling=C,E=C);return e&&b.forEach(function(Q){return t(d,Q)}),ie&&rn(d,x),A}function v(d,f,_,w){var A=Gn(_);if(typeof A!="function")throw Error(S(150));if(_=A.call(_),_==null)throw Error(S(151));for(var E=A=null,b=f,x=f=0,C=null,T=_.next();b!==null&&!T.done;x++,T=_.next()){b.index>x?(C=b,b=null):C=b.sibling;var Q=p(d,b,T.value,w);if(Q===null){b===null&&(b=C);break}e&&b&&Q.alternate===null&&t(d,b),f=i(Q,f,x),E===null?A=Q:E.sibling=Q,E=Q,b=C}if(T.done)return n(d,b),ie&&rn(d,x),A;if(b===null){for(;!T.done;x++,T=_.next())T=g(d,T.value,w),T!==null&&(f=i(T,f,x),E===null?A=T:E.sibling=T,E=T);return ie&&rn(d,x),A}for(b=r(d,b);!T.done;x++,T=_.next())T=h(b,d,x,T.value,w),T!==null&&(e&&T.alternate!==null&&b.delete(T.key===null?x:T.key),f=i(T,f,x),E===null?A=T:E.sibling=T,E=T);return e&&b.forEach(function(j){return t(d,j)}),ie&&rn(d,x),A}function I(d,f,_,w){if(typeof _=="object"&&_!==null&&_.type===bn&&_.key===null&&(_=_.props.children),typeof _=="object"&&_!==null){switch(_.$$typeof){case Ur:e:{for(var A=_.key,E=f;E!==null;){if(E.key===A){if(A=_.type,A===bn){if(E.tag===7){n(d,E.sibling),f=o(E,_.props.children),f.return=d,d=f;break e}}else if(E.elementType===A||typeof A=="object"&&A!==null&&A.$$typeof===Nt&&ha(A)===E.type){n(d,E.sibling),f=o(E,_.props),f.ref=tr(d,E,_),f.return=d,d=f;break e}n(d,E);break}else t(d,E);E=E.sibling}_.type===bn?(f=fn(_.props.children,d.mode,w,_.key),f.return=d,d=f):(w=mo(_.type,_.key,_.props,null,d.mode,w),w.ref=tr(d,f,_),w.return=d,d=w)}return u(d);case An:e:{for(E=_.key;f!==null;){if(f.key===E)if(f.tag===4&&f.stateNode.containerInfo===_.containerInfo&&f.stateNode.implementation===_.implementation){n(d,f.sibling),f=o(f,_.children||[]),f.return=d,d=f;break e}else{n(d,f);break}else t(d,f);f=f.sibling}f=Oi(_,d.mode,w),f.return=d,d=f}return u(d);case Nt:return E=_._init,I(d,f,E(_._payload),w)}if(ir(_))return y(d,f,_,w);if(Gn(_))return v(d,f,_,w);Zr(d,_)}return typeof _=="string"&&_!==""||typeof _=="number"?(_=""+_,f!==null&&f.tag===6?(n(d,f.sibling),f=o(f,_),f.return=d,d=f):(n(d,f),f=Ri(_,d.mode,w),f.return=d,d=f),u(d)):n(d,f)}return I}var Un=nc(!0),rc=nc(!1),jr={},bt=Zt(jr),Ir=Zt(jr),Tr=Zt(jr);function sn(e){if(e===jr)throw Error(S(174));return e}function ll(e,t){switch(te(Tr,t),te(Ir,e),te(bt,jr),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Ji(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Ji(t,e)}oe(bt),te(bt,t)}function Hn(){oe(bt),oe(Ir),oe(Tr)}function oc(e){sn(Tr.current);var t=sn(bt.current),n=Ji(t,e.type);t!==n&&(te(Ir,e),te(bt,n))}function al(e){Ir.current===e&&(oe(bt),oe(Ir))}var le=Zt(0);function No(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Ci=[];function sl(){for(var e=0;en?n:4,e(!0);var r=xi.transition;xi.transition={};try{e(!1),t()}finally{Z=n,xi.transition=r}}function vc(){return rt().memoizedState}function Kd(e,t,n){var r=Yt(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Ac(e))bc(t,n);else if(n=qs(e,t,n,r),n!==null){var o=Re();_t(n,e,r,o),Sc(n,t,r)}}function Yd(e,t,n){var r=Yt(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ac(e))bc(t,o);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var u=t.lastRenderedState,a=i(u,n);if(o.hasEagerState=!0,o.eagerState=a,pt(a,u)){var s=t.interleaved;s===null?(o.next=o,il(t)):(o.next=s.next,s.next=o),t.interleaved=o;return}}catch{}finally{}n=qs(e,t,o,r),n!==null&&(o=Re(),_t(n,e,r,o),Sc(n,t,r))}}function Ac(e){var t=e.alternate;return e===ae||t!==null&&t===ae}function bc(e,t){_r=Bo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Sc(e,t,n){if((n&4194240)!==0){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Wu(e,n)}}var Qo={readContext:nt,useCallback:Ce,useContext:Ce,useEffect:Ce,useImperativeHandle:Ce,useInsertionEffect:Ce,useLayoutEffect:Ce,useMemo:Ce,useReducer:Ce,useRef:Ce,useState:Ce,useDebugValue:Ce,useDeferredValue:Ce,useTransition:Ce,useMutableSource:Ce,useSyncExternalStore:Ce,useId:Ce,unstable_isNewReconciler:!1},Jd={readContext:nt,useCallback:function(e,t){return yt().memoizedState=[e,t===void 0?null:t],e},useContext:nt,useEffect:va,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,fo(4194308,4,gc.bind(null,t,e),n)},useLayoutEffect:function(e,t){return fo(4194308,4,e,t)},useInsertionEffect:function(e,t){return fo(4,2,e,t)},useMemo:function(e,t){var n=yt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=yt();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Kd.bind(null,ae,e),[r.memoizedState,e]},useRef:function(e){var t=yt();return e={current:e},t.memoizedState=e},useState:ya,useDebugValue:pl,useDeferredValue:function(e){return yt().memoizedState=e},useTransition:function(){var e=ya(!1),t=e[0];return e=$d.bind(null,e[1]),yt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=ae,o=yt();if(ie){if(n===void 0)throw Error(S(407));n=n()}else{if(n=t(),be===null)throw Error(S(349));(pn&30)!==0||lc(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,va(sc.bind(null,r,i,e),[e]),r.flags|=2048,Or(9,ac.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=yt(),t=be.identifierPrefix;if(ie){var n=xt,r=Ct;n=(r&~(1<<32-dt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Dr++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),n==="select"&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[vt]=t,e[Pr]=r,Rc(e,t,!1,!1),t.stateNode=e;e:{switch(u=Xi(n,r),n){case"dialog":re("cancel",e),re("close",e),o=r;break;case"iframe":case"object":case"embed":re("load",e),o=r;break;case"video":case"audio":for(o=0;oWn&&(t.flags|=128,r=!0,nr(i,!1),t.lanes=4194304)}else{if(!r)if(e=No(u),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),nr(i,!0),i.tail===null&&i.tailMode==="hidden"&&!u.alternate&&!ie)return xe(t),null}else 2*de()-i.renderingStartTime>Wn&&n!==1073741824&&(t.flags|=128,r=!0,nr(i,!1),t.lanes=4194304);i.isBackwards?(u.sibling=t.child,t.child=u):(n=i.last,n!==null?n.sibling=u:t.child=u,i.last=u)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=de(),t.sibling=null,n=le.current,te(le,r?n&1|2:n&1),t):(xe(t),null);case 22:case 23:return vl(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&(t.mode&1)!==0?(We&1073741824)!==0&&(xe(t),t.subtreeFlags&6&&(t.flags|=8192)):xe(t),null;case 24:return null;case 25:return null}throw Error(S(156,t.tag))}function r_(e,t){switch(el(t),t.tag){case 1:return Fe(t.type)&&Io(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Hn(),oe(je),oe(Ie),sl(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return al(t),null;case 13:if(oe(le),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(S(340));zn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return oe(le),null;case 4:return Hn(),null;case 10:return ol(t.type._context),null;case 22:case 23:return vl(),null;case 24:return null;default:return null}}var to=!1,Pe=!1,o_=typeof WeakSet=="function"?WeakSet:Set,O=null;function Dn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){fe(e,t,r)}else n.current=null}function Eu(e,t,n){try{n()}catch(r){fe(e,t,r)}}var Ia=!1;function i_(e,t){if(lu=ko,e=Qs(),qu(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var u=0,a=-1,s=-1,c=0,m=0,g=e,p=null;t:for(;;){for(var h;g!==n||o!==0&&g.nodeType!==3||(a=u+o),g!==i||r!==0&&g.nodeType!==3||(s=u+r),g.nodeType===3&&(u+=g.nodeValue.length),(h=g.firstChild)!==null;)p=g,g=h;for(;;){if(g===e)break t;if(p===n&&++c===o&&(a=u),p===i&&++m===r&&(s=u),(h=g.nextSibling)!==null)break;g=p,p=g.parentNode}g=h}n=a===-1||s===-1?null:{start:a,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(au={focusedElem:e,selectionRange:n},ko=!1,O=t;O!==null;)if(t=O,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,O=e;else for(;O!==null;){t=O;try{var y=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(y!==null){var v=y.memoizedProps,I=y.memoizedState,d=t.stateNode,f=d.getSnapshotBeforeUpdate(t.elementType===t.type?v:st(t.type,v),I);d.__reactInternalSnapshotBeforeUpdate=f}break;case 3:var _=t.stateNode.containerInfo;_.nodeType===1?_.textContent="":_.nodeType===9&&_.documentElement&&_.removeChild(_.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(S(163))}}catch(w){fe(t,t.return,w)}if(e=t.sibling,e!==null){e.return=t.return,O=e;break}O=t.return}return y=Ia,Ia=!1,y}function pr(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var i=o.destroy;o.destroy=void 0,i!==void 0&&Eu(t,n,i)}o=o.next}while(o!==r)}}function qo(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function ku(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Lc(e){var t=e.alternate;t!==null&&(e.alternate=null,Lc(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[vt],delete t[Pr],delete t[fu],delete t[zd],delete t[Ud])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Nc(e){return e.tag===5||e.tag===3||e.tag===4}function Ta(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Nc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Cu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Po));else if(r!==4&&(e=e.child,e!==null))for(Cu(e,t,n),e=e.sibling;e!==null;)Cu(e,t,n),e=e.sibling}function xu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(xu(e,t,n),e=e.sibling;e!==null;)xu(e,t,n),e=e.sibling}var Se=null,ct=!1;function Lt(e,t,n){for(n=n.child;n!==null;)Bc(e,t,n),n=n.sibling}function Bc(e,t,n){if(At&&typeof At.onCommitFiberUnmount=="function")try{At.onCommitFiberUnmount(Vo,n)}catch{}switch(n.tag){case 5:Pe||Dn(n,t);case 6:var r=Se,o=ct;Se=null,Lt(e,t,n),Se=r,ct=o,Se!==null&&(ct?(e=Se,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Se.removeChild(n.stateNode));break;case 18:Se!==null&&(ct?(e=Se,n=n.stateNode,e.nodeType===8?Ei(e.parentNode,n):e.nodeType===1&&Ei(e,n),Sr(e)):Ei(Se,n.stateNode));break;case 4:r=Se,o=ct,Se=n.stateNode.containerInfo,ct=!0,Lt(e,t,n),Se=r,ct=o;break;case 0:case 11:case 14:case 15:if(!Pe&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var i=o,u=i.destroy;i=i.tag,u!==void 0&&((i&2)!==0||(i&4)!==0)&&Eu(n,t,u),o=o.next}while(o!==r)}Lt(e,t,n);break;case 1:if(!Pe&&(Dn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){fe(n,t,a)}Lt(e,t,n);break;case 21:Lt(e,t,n);break;case 22:n.mode&1?(Pe=(r=Pe)||n.memoizedState!==null,Lt(e,t,n),Pe=r):Lt(e,t,n);break;default:Lt(e,t,n)}}function Da(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new o_),t.forEach(function(r){var o=p_.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function at(e,t){var n=t.deletions;if(n!==null)for(var r=0;ro&&(o=u),r&=~i}if(r=o,r=de()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*l_(r/1960))-r,10e?16:e,zt===null)var r=!1;else{if(e=zt,zt=null,zo=0,(K&6)!==0)throw Error(S(331));var o=K;for(K|=4,O=e.current;O!==null;){var i=O,u=i.child;if((O.flags&16)!==0){var a=i.deletions;if(a!==null){for(var s=0;sde()-hl?cn(e,0):wl|=n),ze(e,t)}function Wc(e,t){t===0&&((e.mode&1)===0?t=1:(t=$r,$r<<=1,($r&130023424)===0&&($r=4194304)));var n=Re();e=Dt(e,t),e!==null&&(Nr(e,t,n),ze(e,n))}function __(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Wc(e,n)}function p_(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(S(314))}r!==null&&r.delete(t),Wc(e,n)}var $c;$c=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||je.current)Qe=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return Qe=!1,t_(e,t,n);Qe=(e.flags&131072)!==0}else Qe=!1,ie&&(t.flags&1048576)!==0&&Js(t,Ro,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;_o(e,t),e=t.pendingProps;var o=Fn(t,Ie.current);Bn(t,n),o=fl(null,t,r,e,o,n);var i=dl();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Fe(r)?(i=!0,To(t)):i=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,ul(t),o.updater=Go,t.stateNode=o,o._reactInternals=t,wu(t,r,e,n),t=vu(null,t,r,!0,i,n)):(t.tag=0,ie&&i&&Zu(t),Te(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(_o(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=m_(r),e=st(r,e),o){case 0:t=yu(null,t,r,e,n);break e;case 1:t=Ca(null,t,r,e,n);break e;case 11:t=Ea(null,t,r,e,n);break e;case 14:t=ka(null,t,r,st(r.type,e),n);break e}throw Error(S(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:st(r,o),yu(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:st(r,o),Ca(e,t,r,o,n);case 3:e:{if(Ic(t),e===null)throw Error(S(387));r=t.pendingProps,i=t.memoizedState,o=i.element,Zs(e,t),Lo(t,r,null,n);var u=t.memoizedState;if(r=u.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:u.cache,pendingSuspenseBoundaries:u.pendingSuspenseBoundaries,transitions:u.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){o=Vn(Error(S(423)),t),t=xa(e,t,r,n,o);break e}else if(r!==o){o=Vn(Error(S(424)),t),t=xa(e,t,r,n,o);break e}else for($e=Wt(t.stateNode.containerInfo.firstChild),Ke=t,ie=!0,ft=null,n=rc(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(zn(),r===o){t=Rt(e,t,n);break e}Te(e,t,r,n)}t=t.child}return t;case 5:return oc(t),e===null&&pu(t),r=t.type,o=t.pendingProps,i=e!==null?e.memoizedProps:null,u=o.children,su(r,o)?u=null:i!==null&&su(r,i)&&(t.flags|=32),Pc(e,t),Te(e,t,u,n),t.child;case 6:return e===null&&pu(t),null;case 13:return Tc(e,t,n);case 4:return ll(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Un(t,null,r,n):Te(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:st(r,o),Ea(e,t,r,o,n);case 7:return Te(e,t,t.pendingProps,n),t.child;case 8:return Te(e,t,t.pendingProps.children,n),t.child;case 12:return Te(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,i=t.memoizedProps,u=o.value,te(Oo,r._currentValue),r._currentValue=u,i!==null)if(pt(i.value,u)){if(i.children===o.children&&!je.current){t=Rt(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var a=i.dependencies;if(a!==null){u=i.child;for(var s=a.firstContext;s!==null;){if(s.context===r){if(i.tag===1){s=Pt(-1,n&-n),s.tag=2;var c=i.updateQueue;if(c!==null){c=c.shared;var m=c.pending;m===null?s.next=s:(s.next=m.next,m.next=s),c.pending=s}}i.lanes|=n,s=i.alternate,s!==null&&(s.lanes|=n),gu(i.return,n,t),a.lanes|=n;break}s=s.next}}else if(i.tag===10)u=i.type===t.type?null:i.child;else if(i.tag===18){if(u=i.return,u===null)throw Error(S(341));u.lanes|=n,a=u.alternate,a!==null&&(a.lanes|=n),gu(u,n,t),u=i.sibling}else u=i.child;if(u!==null)u.return=i;else for(u=i;u!==null;){if(u===t){u=null;break}if(i=u.sibling,i!==null){i.return=u.return,u=i;break}u=u.return}i=u}Te(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,Bn(t,n),o=nt(o),r=r(o),t.flags|=1,Te(e,t,r,n),t.child;case 14:return r=t.type,o=st(r,t.pendingProps),o=st(r.type,o),ka(e,t,r,o,n);case 15:return Cc(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:st(r,o),_o(e,t),t.tag=1,Fe(r)?(e=!0,To(t)):e=!1,Bn(t,n),tc(t,r,o),wu(t,r,o,n),vu(null,t,r,!0,e,n);case 19:return Dc(e,t,n);case 22:return xc(e,t,n)}throw Error(S(156,t.tag))};function Kc(e,t){return ys(e,t)}function g_(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function et(e,t,n,r){return new g_(e,t,n,r)}function bl(e){return e=e.prototype,!(!e||!e.isReactComponent)}function m_(e){if(typeof e=="function")return bl(e)?1:0;if(e!=null){if(e=e.$$typeof,e===zu)return 11;if(e===Uu)return 14}return 2}function Jt(e,t){var n=e.alternate;return n===null?(n=et(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function mo(e,t,n,r,o,i){var u=2;if(r=e,typeof e=="function")bl(e)&&(u=1);else if(typeof e=="string")u=5;else e:switch(e){case bn:return fn(n.children,o,i,t);case Fu:u=8,o|=8;break;case zi:return e=et(12,n,t,o|2),e.elementType=zi,e.lanes=i,e;case Ui:return e=et(13,n,t,o),e.elementType=Ui,e.lanes=i,e;case Hi:return e=et(19,n,t,o),e.elementType=Hi,e.lanes=i,e;case ns:return ei(n,o,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case es:u=10;break e;case ts:u=9;break e;case zu:u=11;break e;case Uu:u=14;break e;case Nt:u=16,r=null;break e}throw Error(S(130,e==null?e:typeof e,""))}return t=et(u,n,t,o),t.elementType=e,t.type=r,t.lanes=i,t}function fn(e,t,n,r){return e=et(7,e,r,t),e.lanes=n,e}function ei(e,t,n,r){return e=et(22,e,r,t),e.elementType=ns,e.lanes=n,e.stateNode={isHidden:!1},e}function Ri(e,t,n){return e=et(6,e,null,t),e.lanes=n,e}function Oi(e,t,n){return t=et(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function w_(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=_i(0),this.expirationTimes=_i(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=_i(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function Sl(e,t,n,r,o,i,u,a,s){return e=new w_(e,t,n,a,s),t===1?(t=1,i===!0&&(t|=8)):t=0,i=et(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},ul(i),e}function h_(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(n){console.error(n)}}t(),e.exports=Je})(Ja);var ja=Ja.exports;ji.createRoot=ja.createRoot,ji.hydrateRoot=ja.hydrateRoot;const S_="/assets/libnoentiendo_bg.6c35c521.wasm",E_=async(e={},t)=>{let n;if(t.startsWith("data:")){const r=t.replace(/^data:.*?base64,/,"");let o;if(typeof Buffer=="function"&&typeof Buffer.from=="function")o=Buffer.from(r,"base64");else if(typeof atob=="function"){const i=atob(r);o=new Uint8Array(i.length);for(let u=0;u"u"?(0,module.require)("util").TextDecoder:TextDecoder;let qc=new C_("utf-8",{ignoreBOM:!0,fatal:!0});qc.decode();let Mi=new Uint8Array;function wo(){return Mi.byteLength===0&&(Mi=new Uint8Array(Jn.buffer)),Mi}function he(e,t){return qc.decode(wo().subarray(e,e+t))}let Ue=0;const x_=typeof TextEncoder>"u"?(0,module.require)("util").TextEncoder:TextEncoder;let ho=new x_("utf-8");const P_=typeof ho.encodeInto=="function"?function(e,t){return ho.encodeInto(e,t)}:function(e,t){const n=ho.encode(e);return t.set(n),{read:e.length,written:n.length}};function ot(e,t,n){if(n===void 0){const a=ho.encode(e),s=t(a.length);return wo().subarray(s,s+a.length).set(a),Ue=a.length,s}let r=e.length,o=t(r);const i=wo();let u=0;for(;u127)break;i[o+u]=a}if(u!==r){u!==0&&(e=e.slice(u)),o=n(o,r,r=u+e.length*3);const a=wo().subarray(o+u,o+r),s=P_(e,a);u+=s.written}return Ue=u,o}function Y(e){return e==null}let Li=new Int32Array;function ue(){return Li.byteLength===0&&(Li=new Int32Array(Jn.buffer)),Li}let Ni=new Float64Array;function I_(){return Ni.byteLength===0&&(Ni=new Float64Array(Jn.buffer)),Ni}function Ru(e){const t=typeof e;if(t=="number"||t=="boolean"||e==null)return`${e}`;if(t=="string")return`"${e}"`;if(t=="symbol"){const o=e.description;return o==null?"Symbol":`Symbol(${o})`}if(t=="function"){const o=e.name;return typeof o=="string"&&o.length>0?`Function(${o})`:"Function"}if(Array.isArray(e)){const o=e.length;let i="[";o>0&&(i+=Ru(e[0]));for(let u=1;u1)r=n[1];else return toString.call(e);if(r=="Object")try{return"Object("+JSON.stringify(e)+")"}catch{return"Object"}return e instanceof Error?`${e.name}: ${e.message} -${e.stack}`:r}function xl(e,t,n,r){const o={a:e,b:t,cnt:1,dtor:n},i=(...u)=>{o.cnt++;const a=o.a;o.a=0;try{return r(a,o.b,...u)}finally{--o.cnt===0?vw.get(o.dtor)(a,o.b):o.a=a}};return i.original=o,i}function T_(e,t,n){Aw(e,t,P(n))}function D_(e,t){bw(e,t)}function R_(e,t,n){Sw(e,t,P(n))}let Bi=new Float32Array;function O_(){return Bi.byteLength===0&&(Bi=new Float32Array(Jn.buffer)),Bi}function Xe(e,t){return O_().subarray(e/4,e/4+t)}function yn(e,t){return ue().subarray(e/4,e/4+t)}let Qi=new Uint32Array;function M_(){return Qi.byteLength===0&&(Qi=new Uint32Array(Jn.buffer)),Qi}function L_(e,t){return M_().subarray(e/4,e/4+t)}function ne(e,t){try{return e.apply(this,t)}catch(n){Ew(P(n))}}function Zc(e){return()=>{throw new Error(`${e} is not defined`)}}class Pl{static __wrap(t){const n=Object.create(Pl.prototype);return n.ptr=t,n}__destroy_into_raw(){const t=this.ptr;return this.ptr=0,t}free(){const t=this.__destroy_into_raw();mw(t)}close(){ww(this.ptr)}reset(){hw(this.ptr)}dispatch_key(t,n){yw(this.ptr,P(t),n)}}class un{static __wrap(t){const n=Object.create(un.prototype);return n.ptr=t,n}__destroy_into_raw(){const t=this.ptr;return this.ptr=0,t}free(){const t=this.__destroy_into_raw();cw(t)}constructor(){const t=fw();return un.__wrap(t)}with_canvas(t){const n=this.__destroy_into_raw(),r=dw(n,P(t));return un.__wrap(r)}with_roms(t){const n=this.__destroy_into_raw(),r=_w(n,P(t));return un.__wrap(r)}with_system(t){const n=this.__destroy_into_raw(),r=ot(t,it,ut),i=pw(n,r,Ue);return un.__wrap(i)}build(){const t=gw(this.ptr);return Pl.__wrap(t)}}function N_(e){Xc(e)}function B_(e){const t=l(e);return P(t)}function Q_(e,t){const n=he(e,t);return P(n)}function j_(e,t){const n=new Error(he(e,t));return P(n)}function F_(e,t){alert(he(e,t))}function z_(e,t,n){const r=prompt(he(t,n)),o=ot(r,it,ut),i=Ue;ue()[e/4+1]=i,ue()[e/4+0]=o}function U_(e){return!l(e)}function H_(e,t){const n=l(t),r=typeof n=="string"?n:void 0;var o=Y(r)?0:ot(r,it,ut),i=Ue;ue()[e/4+1]=i,ue()[e/4+0]=o}function V_(e){return typeof l(e)=="string"}function W_(e){const t=l(e);return typeof t=="object"&&t!==null}function $_(e,t){return l(e)==l(t)}function K_(e){const t=l(e);return typeof t=="boolean"?t?1:0:2}function Y_(e,t){const n=l(t),r=typeof n=="number"?n:void 0;I_()[e/8+1]=Y(r)?0:r,ue()[e/4+0]=!Y(r)}function J_(e){return P(e)}function G_(e){const t=Xc(e).original;return t.cnt--==1?(t.a=0,!0):!1}function X_(e){let t;try{t=l(e)instanceof WebGL2RenderingContext}catch{t=!1}return t}function q_(e,t,n){l(e).beginQuery(t>>>0,l(n))}function Z_(e,t,n,r,o,i){l(e).bindBufferRange(t>>>0,n>>>0,l(r),o,i)}function ep(e,t,n){l(e).bindSampler(t>>>0,l(n))}function tp(e,t){l(e).bindVertexArray(l(t))}function np(e,t,n,r,o,i,u,a,s,c,m){l(e).blitFramebuffer(t,n,r,o,i,u,a,s,c>>>0,m>>>0)}function rp(e,t,n,r){l(e).bufferData(t>>>0,n,r>>>0)}function op(e,t,n,r){l(e).bufferData(t>>>0,l(n),r>>>0)}function ip(e,t,n,r){l(e).bufferSubData(t>>>0,n,l(r))}function up(e,t,n,r,o){l(e).clearBufferfi(t>>>0,n,r,o)}function lp(e,t,n,r,o){l(e).clearBufferfv(t>>>0,n,Xe(r,o))}function ap(e,t,n,r,o){l(e).clearBufferiv(t>>>0,n,yn(r,o))}function sp(e,t,n,r,o){l(e).clearBufferuiv(t>>>0,n,L_(r,o))}function cp(e,t,n,r){return l(e).clientWaitSync(l(t),n>>>0,r>>>0)}function fp(e,t,n,r,o,i,u,a,s,c){l(e).compressedTexSubImage2D(t>>>0,n,r,o,i,u,a>>>0,s,c)}function dp(e,t,n,r,o,i,u,a,s){l(e).compressedTexSubImage2D(t>>>0,n,r,o,i,u,a>>>0,l(s))}function _p(e,t,n,r,o,i,u,a,s,c,m,g){l(e).compressedTexSubImage3D(t>>>0,n,r,o,i,u,a,s,c>>>0,m,g)}function pp(e,t,n,r,o,i,u,a,s,c,m){l(e).compressedTexSubImage3D(t>>>0,n,r,o,i,u,a,s,c>>>0,l(m))}function gp(e,t,n,r,o,i){l(e).copyBufferSubData(t>>>0,n>>>0,r,o,i)}function mp(e,t,n,r,o,i,u,a,s,c){l(e).copyTexSubImage3D(t>>>0,n,r,o,i,u,a,s,c)}function wp(e){const t=l(e).createSampler();return Y(t)?0:P(t)}function hp(e){const t=l(e).createVertexArray();return Y(t)?0:P(t)}function yp(e,t){l(e).deleteQuery(l(t))}function vp(e,t){l(e).deleteSampler(l(t))}function Ap(e,t){l(e).deleteSync(l(t))}function bp(e,t){l(e).deleteVertexArray(l(t))}function Sp(e,t,n,r,o){l(e).drawArraysInstanced(t>>>0,n,r,o)}function Ep(e,t){l(e).drawBuffers(l(t))}function kp(e,t,n,r,o,i){l(e).drawElementsInstanced(t>>>0,n,r>>>0,o,i)}function Cp(e,t){l(e).endQuery(t>>>0)}function xp(e,t,n){const r=l(e).fenceSync(t>>>0,n>>>0);return Y(r)?0:P(r)}function Pp(e,t,n,r,o,i){l(e).framebufferTextureLayer(t>>>0,n>>>0,l(r),o,i)}function Ip(e,t,n,r){l(e).getBufferSubData(t>>>0,n,l(r))}function Tp(){return ne(function(e,t,n){const r=l(e).getIndexedParameter(t>>>0,n>>>0);return P(r)},arguments)}function Dp(e,t,n){const r=l(e).getQueryParameter(l(t),n>>>0);return P(r)}function Rp(e,t,n){const r=l(e).getSyncParameter(l(t),n>>>0);return P(r)}function Op(e,t,n,r){return l(e).getUniformBlockIndex(l(t),he(n,r))}function Mp(){return ne(function(e,t,n){l(e).invalidateFramebuffer(t>>>0,l(n))},arguments)}function Lp(e,t){l(e).readBuffer(t>>>0)}function Np(){return ne(function(e,t,n,r,o,i,u,a){l(e).readPixels(t,n,r,o,i>>>0,u>>>0,l(a))},arguments)}function Bp(){return ne(function(e,t,n,r,o,i,u,a){l(e).readPixels(t,n,r,o,i>>>0,u>>>0,a)},arguments)}function Qp(e,t,n,r,o,i){l(e).renderbufferStorageMultisample(t>>>0,n,r>>>0,o,i)}function jp(e,t,n,r){l(e).samplerParameterf(l(t),n>>>0,r)}function Fp(e,t,n,r){l(e).samplerParameteri(l(t),n>>>0,r)}function zp(e,t,n,r,o,i){l(e).texStorage2D(t>>>0,n,r>>>0,o,i)}function Up(e,t,n,r,o,i,u){l(e).texStorage3D(t>>>0,n,r>>>0,o,i,u)}function Hp(){return ne(function(e,t,n,r,o,i,u,a,s,c){l(e).texSubImage2D(t>>>0,n,r,o,i,u,a>>>0,s>>>0,l(c))},arguments)}function Vp(){return ne(function(e,t,n,r,o,i,u,a,s,c){l(e).texSubImage2D(t>>>0,n,r,o,i,u,a>>>0,s>>>0,c)},arguments)}function Wp(){return ne(function(e,t,n,r,o,i,u,a,s,c,m,g){l(e).texSubImage3D(t>>>0,n,r,o,i,u,a,s,c>>>0,m>>>0,g)},arguments)}function $p(){return ne(function(e,t,n,r,o,i,u,a,s,c,m,g){l(e).texSubImage3D(t>>>0,n,r,o,i,u,a,s,c>>>0,m>>>0,l(g))},arguments)}function Kp(e,t,n,r){l(e).uniform2fv(l(t),Xe(n,r))}function Yp(e,t,n,r){l(e).uniform2iv(l(t),yn(n,r))}function Jp(e,t,n,r){l(e).uniform3fv(l(t),Xe(n,r))}function Gp(e,t,n,r){l(e).uniform3iv(l(t),yn(n,r))}function Xp(e,t,n,r){l(e).uniform4fv(l(t),Xe(n,r))}function qp(e,t,n,r){l(e).uniform4iv(l(t),yn(n,r))}function Zp(e,t,n,r){l(e).uniformBlockBinding(l(t),n>>>0,r>>>0)}function eg(e,t,n,r,o){l(e).uniformMatrix2fv(l(t),n!==0,Xe(r,o))}function tg(e,t,n,r,o){l(e).uniformMatrix3fv(l(t),n!==0,Xe(r,o))}function ng(e,t,n,r,o){l(e).uniformMatrix4fv(l(t),n!==0,Xe(r,o))}function rg(e,t,n){l(e).vertexAttribDivisor(t>>>0,n>>>0)}function og(e,t,n,r,o,i){l(e).vertexAttribIPointer(t>>>0,n,r>>>0,o,i)}function ig(e,t){l(e).activeTexture(t>>>0)}function ug(e,t,n){l(e).attachShader(l(t),l(n))}function lg(e,t,n){l(e).bindBuffer(t>>>0,l(n))}function ag(e,t,n){l(e).bindFramebuffer(t>>>0,l(n))}function sg(e,t,n){l(e).bindRenderbuffer(t>>>0,l(n))}function cg(e,t,n){l(e).bindTexture(t>>>0,l(n))}function fg(e,t,n,r,o){l(e).blendColor(t,n,r,o)}function dg(e,t){l(e).blendEquation(t>>>0)}function _g(e,t,n){l(e).blendEquationSeparate(t>>>0,n>>>0)}function pg(e,t,n){l(e).blendFunc(t>>>0,n>>>0)}function gg(e,t,n,r,o){l(e).blendFuncSeparate(t>>>0,n>>>0,r>>>0,o>>>0)}function mg(e,t,n,r,o){l(e).colorMask(t!==0,n!==0,r!==0,o!==0)}function wg(e,t){l(e).compileShader(l(t))}function hg(e,t,n,r,o,i,u,a,s){l(e).copyTexSubImage2D(t>>>0,n,r,o,i,u,a,s)}function yg(e){const t=l(e).createBuffer();return Y(t)?0:P(t)}function vg(e){const t=l(e).createFramebuffer();return Y(t)?0:P(t)}function Ag(e){const t=l(e).createProgram();return Y(t)?0:P(t)}function bg(e){const t=l(e).createRenderbuffer();return Y(t)?0:P(t)}function Sg(e,t){const n=l(e).createShader(t>>>0);return Y(n)?0:P(n)}function Eg(e){const t=l(e).createTexture();return Y(t)?0:P(t)}function kg(e,t){l(e).cullFace(t>>>0)}function Cg(e,t){l(e).deleteBuffer(l(t))}function xg(e,t){l(e).deleteFramebuffer(l(t))}function Pg(e,t){l(e).deleteProgram(l(t))}function Ig(e,t){l(e).deleteRenderbuffer(l(t))}function Tg(e,t){l(e).deleteShader(l(t))}function Dg(e,t){l(e).deleteTexture(l(t))}function Rg(e,t){l(e).depthFunc(t>>>0)}function Og(e,t){l(e).depthMask(t!==0)}function Mg(e,t,n){l(e).depthRange(t,n)}function Lg(e,t){l(e).disable(t>>>0)}function Ng(e,t){l(e).disableVertexAttribArray(t>>>0)}function Bg(e,t,n,r){l(e).drawArrays(t>>>0,n,r)}function Qg(e,t,n,r,o){l(e).drawElements(t>>>0,n,r>>>0,o)}function jg(e,t){l(e).enable(t>>>0)}function Fg(e,t){l(e).enableVertexAttribArray(t>>>0)}function zg(e,t,n,r,o){l(e).framebufferRenderbuffer(t>>>0,n>>>0,r>>>0,l(o))}function Ug(e,t,n,r,o,i){l(e).framebufferTexture2D(t>>>0,n>>>0,r>>>0,l(o),i)}function Hg(e,t){l(e).frontFace(t>>>0)}function Vg(e,t,n){const r=l(e).getActiveUniform(l(t),n>>>0);return Y(r)?0:P(r)}function Wg(){return ne(function(e,t,n){const r=l(e).getExtension(he(t,n));return Y(r)?0:P(r)},arguments)}function $g(){return ne(function(e,t){const n=l(e).getParameter(t>>>0);return P(n)},arguments)}function Kg(e,t,n){const r=l(t).getProgramInfoLog(l(n));var o=Y(r)?0:ot(r,it,ut),i=Ue;ue()[e/4+1]=i,ue()[e/4+0]=o}function Yg(e,t,n){const r=l(e).getProgramParameter(l(t),n>>>0);return P(r)}function Jg(e,t,n){const r=l(t).getShaderInfoLog(l(n));var o=Y(r)?0:ot(r,it,ut),i=Ue;ue()[e/4+1]=i,ue()[e/4+0]=o}function Gg(e,t,n){const r=l(e).getShaderParameter(l(t),n>>>0);return P(r)}function Xg(e){const t=l(e).getSupportedExtensions();return Y(t)?0:P(t)}function qg(e,t,n,r){const o=l(e).getUniformLocation(l(t),he(n,r));return Y(o)?0:P(o)}function Zg(e,t){l(e).linkProgram(l(t))}function e0(e,t,n){l(e).pixelStorei(t>>>0,n)}function t0(e,t,n){l(e).polygonOffset(t,n)}function n0(e,t,n,r,o){l(e).renderbufferStorage(t>>>0,n>>>0,r,o)}function r0(e,t,n,r,o){l(e).scissor(t,n,r,o)}function o0(e,t,n,r){l(e).shaderSource(l(t),he(n,r))}function i0(e,t,n,r,o){l(e).stencilFuncSeparate(t>>>0,n>>>0,r,o>>>0)}function u0(e,t){l(e).stencilMask(t>>>0)}function l0(e,t,n){l(e).stencilMaskSeparate(t>>>0,n>>>0)}function a0(e,t,n,r,o){l(e).stencilOpSeparate(t>>>0,n>>>0,r>>>0,o>>>0)}function s0(e,t,n,r){l(e).texParameteri(t>>>0,n>>>0,r)}function c0(e,t,n){l(e).uniform1f(l(t),n)}function f0(e,t,n){l(e).uniform1i(l(t),n)}function d0(e,t,n,r,o,i){l(e).uniform4f(l(t),n,r,o,i)}function _0(e,t){l(e).useProgram(l(t))}function p0(e,t,n,r,o,i,u){l(e).vertexAttribPointer(t>>>0,n,r>>>0,o!==0,i,u)}function g0(e,t,n,r,o){l(e).viewport(t,n,r,o)}function m0(e){let t;try{t=l(e)instanceof Window}catch{t=!1}return t}function w0(e){const t=l(e).document;return Y(t)?0:P(t)}function h0(e){const t=l(e).navigator;return P(t)}function y0(e,t){l(e).clearInterval(t)}function v0(){return ne(function(e,t,n){return l(e).setInterval(l(t),n)},arguments)}function A0(e,t){const n=l(t).value,r=ot(n,it,ut),o=Ue;ue()[e/4+1]=o,ue()[e/4+0]=r}function b0(e){let t;try{t=l(e)instanceof Gamepad}catch{t=!1}return t}function S0(e){const t=l(e).buttons;return P(t)}function E0(e){let t;try{t=l(e)instanceof GamepadButton}catch{t=!1}return t}function k0(e){return l(e).pressed}function C0(e,t,n){const r=l(e).getNamedItem(he(t,n));return Y(r)?0:P(r)}function x0(e,t,n,r,o){l(e).drawArraysInstancedANGLE(t>>>0,n,r,o)}function P0(e,t,n,r,o,i){l(e).drawElementsInstancedANGLE(t>>>0,n,r>>>0,o,i)}function I0(e,t,n){l(e).vertexAttribDivisorANGLE(t>>>0,n>>>0)}function T0(){return ne(function(e,t,n,r){l(e).addEventListener(he(t,n),l(r))},arguments)}function D0(e,t){l(e).bindVertexArrayOES(l(t))}function R0(e){const t=l(e).createVertexArrayOES();return Y(t)?0:P(t)}function O0(e,t){l(e).deleteVertexArrayOES(l(t))}function M0(e,t){l(e).drawBuffersWEBGL(l(t))}function L0(e){let t;try{t=l(e)instanceof HTMLCanvasElement}catch{t=!1}return t}function N0(e,t){l(e).width=t>>>0}function B0(e,t){l(e).height=t>>>0}function Q0(){return ne(function(e,t,n,r){const o=l(e).getContext(he(t,n),l(r));return Y(o)?0:P(o)},arguments)}function j0(e){return l(e).now()}function F0(e,t){const n=l(t).code,r=ot(n,it,ut),o=Ue;ue()[e/4+1]=o,ue()[e/4+0]=r}function z0(){return ne(function(e,t,n){const r=l(e).querySelector(he(t,n));return Y(r)?0:P(r)},arguments)}function U0(e){const t=l(e).attributes;return P(t)}function H0(){return ne(function(e,t,n,r,o){l(e).setAttribute(he(t,n),he(r,o))},arguments)}function V0(e,t,n,r){l(e).bufferData(t>>>0,n,r>>>0)}function W0(e,t,n,r){l(e).bufferData(t>>>0,l(n),r>>>0)}function $0(e,t,n,r){l(e).bufferSubData(t>>>0,n,l(r))}function K0(e,t,n,r,o,i,u,a,s){l(e).compressedTexSubImage2D(t>>>0,n,r,o,i,u,a>>>0,l(s))}function Y0(){return ne(function(e,t,n,r,o,i,u,a){l(e).readPixels(t,n,r,o,i>>>0,u>>>0,l(a))},arguments)}function J0(){return ne(function(e,t,n,r,o,i,u,a,s,c){l(e).texSubImage2D(t>>>0,n,r,o,i,u,a>>>0,s>>>0,l(c))},arguments)}function G0(e,t,n,r){l(e).uniform2fv(l(t),Xe(n,r))}function X0(e,t,n,r){l(e).uniform2iv(l(t),yn(n,r))}function q0(e,t,n,r){l(e).uniform3fv(l(t),Xe(n,r))}function Z0(e,t,n,r){l(e).uniform3iv(l(t),yn(n,r))}function em(e,t,n,r){l(e).uniform4fv(l(t),Xe(n,r))}function tm(e,t,n,r){l(e).uniform4iv(l(t),yn(n,r))}function nm(e,t,n,r,o){l(e).uniformMatrix2fv(l(t),n!==0,Xe(r,o))}function rm(e,t,n,r,o){l(e).uniformMatrix3fv(l(t),n!==0,Xe(r,o))}function om(e,t,n,r,o){l(e).uniformMatrix4fv(l(t),n!==0,Xe(r,o))}function im(e,t){l(e).activeTexture(t>>>0)}function um(e,t,n){l(e).attachShader(l(t),l(n))}function lm(e,t,n){l(e).bindBuffer(t>>>0,l(n))}function am(e,t,n){l(e).bindFramebuffer(t>>>0,l(n))}function sm(e,t,n){l(e).bindRenderbuffer(t>>>0,l(n))}function cm(e,t,n){l(e).bindTexture(t>>>0,l(n))}function fm(e,t,n,r,o){l(e).blendColor(t,n,r,o)}function dm(e,t){l(e).blendEquation(t>>>0)}function _m(e,t,n){l(e).blendEquationSeparate(t>>>0,n>>>0)}function pm(e,t,n){l(e).blendFunc(t>>>0,n>>>0)}function gm(e,t,n,r,o){l(e).blendFuncSeparate(t>>>0,n>>>0,r>>>0,o>>>0)}function mm(e,t,n,r,o){l(e).colorMask(t!==0,n!==0,r!==0,o!==0)}function wm(e,t){l(e).compileShader(l(t))}function hm(e,t,n,r,o,i,u,a,s){l(e).copyTexSubImage2D(t>>>0,n,r,o,i,u,a,s)}function ym(e){const t=l(e).createBuffer();return Y(t)?0:P(t)}function vm(e){const t=l(e).createFramebuffer();return Y(t)?0:P(t)}function Am(e){const t=l(e).createProgram();return Y(t)?0:P(t)}function bm(e){const t=l(e).createRenderbuffer();return Y(t)?0:P(t)}function Sm(e,t){const n=l(e).createShader(t>>>0);return Y(n)?0:P(n)}function Em(e){const t=l(e).createTexture();return Y(t)?0:P(t)}function km(e,t){l(e).cullFace(t>>>0)}function Cm(e,t){l(e).deleteBuffer(l(t))}function xm(e,t){l(e).deleteFramebuffer(l(t))}function Pm(e,t){l(e).deleteProgram(l(t))}function Im(e,t){l(e).deleteRenderbuffer(l(t))}function Tm(e,t){l(e).deleteShader(l(t))}function Dm(e,t){l(e).deleteTexture(l(t))}function Rm(e,t){l(e).depthFunc(t>>>0)}function Om(e,t){l(e).depthMask(t!==0)}function Mm(e,t,n){l(e).depthRange(t,n)}function Lm(e,t){l(e).disable(t>>>0)}function Nm(e,t){l(e).disableVertexAttribArray(t>>>0)}function Bm(e,t,n,r){l(e).drawArrays(t>>>0,n,r)}function Qm(e,t,n,r,o){l(e).drawElements(t>>>0,n,r>>>0,o)}function jm(e,t){l(e).enable(t>>>0)}function Fm(e,t){l(e).enableVertexAttribArray(t>>>0)}function zm(e,t,n,r,o){l(e).framebufferRenderbuffer(t>>>0,n>>>0,r>>>0,l(o))}function Um(e,t,n,r,o,i){l(e).framebufferTexture2D(t>>>0,n>>>0,r>>>0,l(o),i)}function Hm(e,t){l(e).frontFace(t>>>0)}function Vm(e,t,n){const r=l(e).getActiveUniform(l(t),n>>>0);return Y(r)?0:P(r)}function Wm(){return ne(function(e,t){const n=l(e).getParameter(t>>>0);return P(n)},arguments)}function $m(e,t,n){const r=l(t).getProgramInfoLog(l(n));var o=Y(r)?0:ot(r,it,ut),i=Ue;ue()[e/4+1]=i,ue()[e/4+0]=o}function Km(e,t,n){const r=l(e).getProgramParameter(l(t),n>>>0);return P(r)}function Ym(e,t,n){const r=l(t).getShaderInfoLog(l(n));var o=Y(r)?0:ot(r,it,ut),i=Ue;ue()[e/4+1]=i,ue()[e/4+0]=o}function Jm(e,t,n){const r=l(e).getShaderParameter(l(t),n>>>0);return P(r)}function Gm(e,t,n,r){const o=l(e).getUniformLocation(l(t),he(n,r));return Y(o)?0:P(o)}function Xm(e,t){l(e).linkProgram(l(t))}function qm(e,t,n){l(e).pixelStorei(t>>>0,n)}function Zm(e,t,n){l(e).polygonOffset(t,n)}function e1(e,t,n,r,o){l(e).renderbufferStorage(t>>>0,n>>>0,r,o)}function t1(e,t,n,r,o){l(e).scissor(t,n,r,o)}function n1(e,t,n,r){l(e).shaderSource(l(t),he(n,r))}function r1(e,t,n,r,o){l(e).stencilFuncSeparate(t>>>0,n>>>0,r,o>>>0)}function o1(e,t){l(e).stencilMask(t>>>0)}function i1(e,t,n){l(e).stencilMaskSeparate(t>>>0,n>>>0)}function u1(e,t,n,r,o){l(e).stencilOpSeparate(t>>>0,n>>>0,r>>>0,o>>>0)}function l1(e,t,n,r){l(e).texParameteri(t>>>0,n>>>0,r)}function a1(e,t,n){l(e).uniform1f(l(t),n)}function s1(e,t,n){l(e).uniform1i(l(t),n)}function c1(e,t,n,r,o,i){l(e).uniform4f(l(t),n,r,o,i)}function f1(e,t){l(e).useProgram(l(t))}function d1(e,t,n,r,o,i,u){l(e).vertexAttribPointer(t>>>0,n,r>>>0,o!==0,i,u)}function _1(e,t,n,r,o){l(e).viewport(t,n,r,o)}function p1(e){console.log(l(e))}function g1(){return ne(function(e){const t=l(e).getGamepads();return P(t)},arguments)}function m1(e){return l(e).size}function w1(e){return l(e).type}function h1(e,t){const n=l(t).name,r=ot(n,it,ut),o=Ue;ue()[e/4+1]=o,ue()[e/4+0]=r}function y1(e){l(e).preventDefault()}function v1(e,t){const n=l(e)[t>>>0];return P(n)}function A1(e){return l(e).length}function b1(){const e=new Array;return P(e)}function S1(e,t){const n=new Function(he(e,t));return P(n)}function E1(){return ne(function(e,t){const n=Reflect.get(l(e),l(t));return P(n)},arguments)}function k1(){return ne(function(e,t){const n=l(e).call(l(t));return P(n)},arguments)}function C1(){const e=new Object;return P(e)}function x1(){return ne(function(){const e=self.self;return P(e)},arguments)}function P1(){return ne(function(){const e=window.window;return P(e)},arguments)}function I1(){return ne(function(){const e=globalThis.globalThis;return P(e)},arguments)}function T1(){return ne(function(){const e=global.global;return P(e)},arguments)}function D1(e){return l(e)===void 0}function R1(e){const t=Array.of(l(e));return P(t)}function O1(e,t){return l(e).push(l(t))}function M1(e){let t;try{t=l(e)instanceof ArrayBuffer}catch{t=!1}return t}function L1(e){const t=Object.entries(l(e));return P(t)}function N1(e,t){return Object.is(l(e),l(t))}function B1(e){const t=Promise.resolve(l(e));return P(t)}function Q1(e,t){const n=l(e).then(l(t));return P(n)}function j1(e){const t=l(e).buffer;return P(t)}function F1(e,t,n){const r=new Int8Array(l(e),t>>>0,n>>>0);return P(r)}function z1(e,t,n){const r=new Int16Array(l(e),t>>>0,n>>>0);return P(r)}function U1(e,t,n){const r=new Int32Array(l(e),t>>>0,n>>>0);return P(r)}function H1(e,t,n){const r=new Uint8Array(l(e),t>>>0,n>>>0);return P(r)}function V1(e){const t=new Uint8Array(l(e));return P(t)}function W1(e,t,n){l(e).set(l(t),n>>>0)}function $1(e){return l(e).length}function K1(e,t,n){const r=new Uint16Array(l(e),t>>>0,n>>>0);return P(r)}function Y1(e,t,n){const r=new Uint32Array(l(e),t>>>0,n>>>0);return P(r)}function J1(e,t,n){const r=new Float32Array(l(e),t>>>0,n>>>0);return P(r)}function G1(e){let t;try{t=l(e)instanceof Uint8Array}catch{t=!1}return t}function X1(e,t){return l(e)[t>>>0]}function q1(){return ne(function(e,t,n){return Reflect.set(l(e),l(t),l(n))},arguments)}const Z1=typeof Math.floor=="function"?Math.floor:Zc("Math.floor"),ew=typeof Math.random=="function"?Math.random:Zc("Math.random");function tw(){const e=new Error;return P(e)}function nw(e,t){const n=l(t).stack,r=ot(n,it,ut),o=Ue;ue()[e/4+1]=o,ue()[e/4+0]=r}function rw(e,t){try{console.error(he(e,t))}finally{kw(e,t)}}function ow(e,t){const n=Ru(l(t)),r=ot(n,it,ut),o=Ue;ue()[e/4+1]=o,ue()[e/4+0]=r}function iw(e,t){throw new Error(he(e,t))}function uw(){return P(Jn)}function lw(e,t,n){const r=xl(e,t,28,T_);return P(r)}function aw(e,t,n){const r=xl(e,t,28,D_);return P(r)}function sw(e,t,n){const r=xl(e,t,222,R_);return P(r)}URL=globalThis.URL;const M=await E_({"./libnoentiendo_bg.js":{__wbindgen_object_drop_ref:N_,__wbindgen_object_clone_ref:B_,__wbindgen_string_new:Q_,__wbindgen_error_new:j_,__wbg_alert_4ec518553ecb260d:F_,__wbg_prompt_cd54bd8801e664bd:z_,__wbindgen_is_falsy:U_,__wbindgen_string_get:H_,__wbindgen_is_string:V_,__wbindgen_is_object:W_,__wbindgen_jsval_loose_eq:$_,__wbindgen_boolean_get:K_,__wbindgen_number_get:Y_,__wbindgen_number_new:J_,__wbindgen_cb_drop:G_,__wbg_instanceof_WebGl2RenderingContext_fcfa91cd777063f3:X_,__wbg_beginQuery_909ec673d606f873:q_,__wbg_bindBufferRange_b8f6dc19661d5cf7:Z_,__wbg_bindSampler_4b0e0e598e2cae44:ep,__wbg_bindVertexArray_9d12800e272184b0:tp,__wbg_blitFramebuffer_cdc1ebf043046b70:np,__wbg_bufferData_6ce28904b25c8be9:rp,__wbg_bufferData_8d206d7adf6751c0:op,__wbg_bufferSubData_0e04c6c7fec3c949:ip,__wbg_clearBufferfi_92173f77d7147a2f:up,__wbg_clearBufferfv_5cc4edeacbcf72e8:lp,__wbg_clearBufferiv_8bb0c2b97eedc22b:ap,__wbg_clearBufferuiv_1f5c5e9baa9a3d9b:sp,__wbg_clientWaitSync_ad323ab9e423d0cf:cp,__wbg_compressedTexSubImage2D_5b2a7dc8dc7b3e73:fp,__wbg_compressedTexSubImage2D_fd1cef4f6a5da5c3:dp,__wbg_compressedTexSubImage3D_0df5a8ddb9ebafc2:_p,__wbg_compressedTexSubImage3D_9c916feb243112db:pp,__wbg_copyBufferSubData_11187dccce72b79b:gp,__wbg_copyTexSubImage3D_7a262558a6a33f2e:mp,__wbg_createSampler_288fd761eabe283d:wp,__wbg_createVertexArray_8467a75e68fec199:hp,__wbg_deleteQuery_77a7ae09eda297e1:yp,__wbg_deleteSampler_ec3ca2243d8cfcad:vp,__wbg_deleteSync_48aed3df05f4f497:Ap,__wbg_deleteVertexArray_00194a31d79df7e5:bp,__wbg_drawArraysInstanced_951a1d7e32c4f855:Sp,__wbg_drawBuffers_23c1572f12f90db2:Ep,__wbg_drawElementsInstanced_2e05a96af17fe284:kp,__wbg_endQuery_05baee8fc782e5f0:Cp,__wbg_fenceSync_91d72c970c880844:xp,__wbg_framebufferTextureLayer_d5e78fc74b8261e3:Pp,__wbg_getBufferSubData_6b00169c609c16f7:Ip,__wbg_getIndexedParameter_d4a2b68e14a022a1:Tp,__wbg_getQueryParameter_358ea490fb85e05c:Dp,__wbg_getSyncParameter_ab2f9499a91faae0:Rp,__wbg_getUniformBlockIndex_a6f3a994dcc7399d:Op,__wbg_invalidateFramebuffer_802e38619851791e:Mp,__wbg_readBuffer_f20d42ed12643534:Lp,__wbg_readPixels_e855be1f94815442:Np,__wbg_readPixels_5d4e6205291096f0:Bp,__wbg_renderbufferStorageMultisample_3e76453eed60554b:Qp,__wbg_samplerParameterf_6eda655d7213cb18:jp,__wbg_samplerParameteri_390f1debfe40f83b:Fp,__wbg_texStorage2D_d25a76ad1b1ea98f:zp,__wbg_texStorage3D_19979792a7a67f59:Up,__wbg_texSubImage2D_421e29fed0db07ab:Hp,__wbg_texSubImage2D_f06e46b3b25ee691:Vp,__wbg_texSubImage3D_ebb9e6f80d19a411:Wp,__wbg_texSubImage3D_591b8511a3c7593a:$p,__wbg_uniform2fv_a611afaf4a045f7e:Kp,__wbg_uniform2iv_b1b33c9425d5791b:Yp,__wbg_uniform3fv_740a7286bf6328ee:Jp,__wbg_uniform3iv_df752fa54b2b8b7b:Gp,__wbg_uniform4fv_737873ef0bcd5e6c:Xp,__wbg_uniform4iv_67eed4073c7e55c5:qp,__wbg_uniformBlockBinding_50ced0c985f91a02:Zp,__wbg_uniformMatrix2fv_f4fc5e6214cc5549:eg,__wbg_uniformMatrix3fv_a02aa02ecb8e5f99:tg,__wbg_uniformMatrix4fv_68d11b378757596e:ng,__wbg_vertexAttribDivisor_2dc16945a591d4c6:rg,__wbg_vertexAttribIPointer_167c7ed4319992e7:og,__wbg_activeTexture_6a9afd67cc0ade73:ig,__wbg_attachShader_90ad543fb1bccb18:ug,__wbg_bindBuffer_66e359418f5c82d7:lg,__wbg_bindFramebuffer_5c01742edd5d843a:ag,__wbg_bindRenderbuffer_f66dee160b94e5ef:sg,__wbg_bindTexture_ae9620ea4a6ffb97:cg,__wbg_blendColor_50e203e2f58784cb:fg,__wbg_blendEquation_72746aedc87e3f72:dg,__wbg_blendEquationSeparate_f0abe930082fff02:_g,__wbg_blendFunc_99b48b64bde98c6f:pg,__wbg_blendFuncSeparate_cecb7dfda39dc38d:gg,__wbg_colorMask_12687df5490e9bc9:mg,__wbg_compileShader_822f38928f6f2a08:wg,__wbg_copyTexSubImage2D_4c72e3ef713b65e6:hg,__wbg_createBuffer_a6cffb7f7d5b92a3:yg,__wbg_createFramebuffer_d5f3985ce3652661:vg,__wbg_createProgram_dc6b23d3caa1d86e:Ag,__wbg_createRenderbuffer_531167a301a60e27:bg,__wbg_createShader_46a66dce5a9e22d0:Sg,__wbg_createTexture_269f67d411bdc4dc:Eg,__wbg_cullFace_d6b862a4ad70b414:kg,__wbg_deleteBuffer_12fd7d93834069ef:Cg,__wbg_deleteFramebuffer_d7551444a28f508e:xg,__wbg_deleteProgram_ce56000628d7f1ce:Pg,__wbg_deleteRenderbuffer_58c540348fb8606d:Ig,__wbg_deleteShader_246e6e678f3eb957:Tg,__wbg_deleteTexture_68a539339fd87792:Dg,__wbg_depthFunc_1015c3364a49cd2f:Rg,__wbg_depthMask_55f538b7411e5023:Og,__wbg_depthRange_c6ed3371d3b601f8:Mg,__wbg_disable_1659dc1efb5fb934:Lg,__wbg_disableVertexAttribArray_6f3d27dd0ad6aabf:Ng,__wbg_drawArrays_d587302f7a868d91:Bg,__wbg_drawElements_241caa588795bcb1:Qg,__wbg_enable_4791414dce6f602a:jg,__wbg_enableVertexAttribArray_a1ffc091f3999354:Fg,__wbg_framebufferRenderbuffer_963b305ac8cb6fd6:zg,__wbg_framebufferTexture2D_4b810902dffa1ef3:Ug,__wbg_frontFace_97d7f9493791771d:Hg,__wbg_getActiveUniform_97472b76b9daa461:Vg,__wbg_getExtension_e7912bce04869d40:Wg,__wbg_getParameter_4e2ccc745690476a:$g,__wbg_getProgramInfoLog_1e37a3d1d090ec1c:Kg,__wbg_getProgramParameter_acf4ae158143e2b2:Yg,__wbg_getShaderInfoLog_451545b963646762:Jg,__wbg_getShaderParameter_6cd8c36fded266ea:Gg,__wbg_getSupportedExtensions_b84494641d686623:Xg,__wbg_getUniformLocation_0da0c93f626244a2:qg,__wbg_linkProgram_c33885d9ea798810:Zg,__wbg_pixelStorei_51c83dc5117bea35:e0,__wbg_polygonOffset_7af170d91752512c:t0,__wbg_renderbufferStorage_0b6269243d09a9f7:n0,__wbg_scissor_b1b9e314ab6aac29:r0,__wbg_shaderSource_5111981e7afb61fb:o0,__wbg_stencilFuncSeparate_2939e543fa4caa77:i0,__wbg_stencilMask_4eb0f989e4108b15:u0,__wbg_stencilMaskSeparate_69e9937a9533f4ab:l0,__wbg_stencilOpSeparate_c57c8bbe863e9f57:a0,__wbg_texParameteri_21fd6b6b394882c9:s0,__wbg_uniform1f_ade6c204580582c8:c0,__wbg_uniform1i_49986febd844f2c4:f0,__wbg_uniform4f_d564461a6e4fdfe0:d0,__wbg_useProgram_35a58ac1e0d9577b:_0,__wbg_vertexAttribPointer_3b06d737566f0745:p0,__wbg_viewport_319ab5302767fcc9:g0,__wbg_instanceof_Window_acc97ff9f5d2c7b4:m0,__wbg_document_3ead31dbcad65886:w0,__wbg_navigator_d1dcf282b97e2495:h0,__wbg_clearInterval_9d8e1ff2b921f41f:y0,__wbg_setInterval_b6f2e23785929613:v0,__wbg_value_5ad7478d7216c125:A0,__wbg_instanceof_Gamepad_530c9ede38ea1fa0:b0,__wbg_buttons_1162e62c0dc4246e:S0,__wbg_instanceof_GamepadButton_7bf6efc7de5e0120:E0,__wbg_pressed_7add67434a3dd765:k0,__wbg_getNamedItem_bcfc3b5818f403a4:C0,__wbg_drawArraysInstancedANGLE_89a45d6f51cd0483:x0,__wbg_drawElementsInstancedANGLE_6ac21f9a1ebe5f6b:P0,__wbg_vertexAttribDivisorANGLE_d5931335aaf0c735:I0,__wbg_addEventListener_cbe4c6f619b032f3:T0,__wbg_bindVertexArrayOES_84540c072ea96b75:D0,__wbg_createVertexArrayOES_00a5c523e5b17eff:R0,__wbg_deleteVertexArrayOES_98b83132b3d85825:O0,__wbg_drawBuffersWEBGL_482a093ae5a4ad55:M0,__wbg_instanceof_HtmlCanvasElement_97761617af6ea089:L0,__wbg_setwidth_afb418d3fbf71ba7:N0,__wbg_setheight_3eb8729b59493242:B0,__wbg_getContext_a6ea7a8e317f182a:Q0,__wbg_now_8172cd917e5eda6b:j0,__wbg_code_06787cd3c7a60600:F0,__wbg_querySelector_3628dc2c3319e7e0:z0,__wbg_attributes_a4140d6795dd5707:U0,__wbg_setAttribute_d8436c14a59ab1af:H0,__wbg_bufferData_d6fac0d761e08fec:V0,__wbg_bufferData_a33528a74dd300f4:W0,__wbg_bufferSubData_a116fea11850b38f:$0,__wbg_compressedTexSubImage2D_30943b654d04ee44:K0,__wbg_readPixels_db685489e1779d63:Y0,__wbg_texSubImage2D_cb339dd200dd1179:J0,__wbg_uniform2fv_3aad4d306a1cb8af:G0,__wbg_uniform2iv_8c390eac30cb1de3:X0,__wbg_uniform3fv_d1ef35c158c348e7:q0,__wbg_uniform3iv_76acc51e8e6fe1a4:Z0,__wbg_uniform4fv_a513dc4d02f192d3:em,__wbg_uniform4iv_19aa13960dc767c2:tm,__wbg_uniformMatrix2fv_4173a282fcaa5508:nm,__wbg_uniformMatrix3fv_2b7de3010c8ed627:rm,__wbg_uniformMatrix4fv_f16e4a5553357886:om,__wbg_activeTexture_02b7c73c76c2c06b:im,__wbg_attachShader_f4d51147351a1906:um,__wbg_bindBuffer_8b5135aa633680f5:lm,__wbg_bindFramebuffer_080d0b0cf22e1645:am,__wbg_bindRenderbuffer_6da549f066c1b8a5:sm,__wbg_bindTexture_6f1dec563e82e818:cm,__wbg_blendColor_3bea829c60b1f6f2:fm,__wbg_blendEquation_5d5abe2ee10109a9:dm,__wbg_blendEquationSeparate_fa6aebc5cd0c5285:_m,__wbg_blendFunc_49ea28240d4c1084:pm,__wbg_blendFuncSeparate_9fef8acb74d50df5:gm,__wbg_colorMask_bc13c97d0db65962:mm,__wbg_compileShader_22b038faa1f49857:wm,__wbg_copyTexSubImage2D_e815f93a9ef52dd2:hm,__wbg_createBuffer_6e747d928c9ba46d:ym,__wbg_createFramebuffer_9b5b0507480146cd:vm,__wbg_createProgram_1c5f8dffd1066e71:Am,__wbg_createRenderbuffer_69c2f0554298bf89:bm,__wbg_createShader_4017d9fbc36659af:Sm,__wbg_createTexture_4ce49e8a8c655124:Em,__wbg_cullFace_aa9f8eea262690c0:km,__wbg_deleteBuffer_6fd9bca7f8a6d9de:Cm,__wbg_deleteFramebuffer_2617e39d2c39b4da:xm,__wbg_deleteProgram_e8636e3cb5a18a59:Pm,__wbg_deleteRenderbuffer_e5b3450b8b57b395:Im,__wbg_deleteShader_89369612f61ec145:Tm,__wbg_deleteTexture_5c40169772519141:Dm,__wbg_depthFunc_2ac2c797a8220f09:Rm,__wbg_depthMask_88ab181c23c32dcd:Om,__wbg_depthRange_5dccc27b5cdd74b3:Mm,__wbg_disable_6835d16c2cd3fa26:Lm,__wbg_disableVertexAttribArray_ab474d273ff59265:Nm,__wbg_drawArrays_c0dcb4151e0bf007:Bm,__wbg_drawElements_e09dbef58c8f099a:Qm,__wbg_enable_fc393941ac400f72:jm,__wbg_enableVertexAttribArray_3d21f4936ad4a378:Fm,__wbg_framebufferRenderbuffer_6b8dd5a111d341e6:zm,__wbg_framebufferTexture2D_499d1c21458d0113:Um,__wbg_frontFace_5fd354be6327d46b:Hm,__wbg_getActiveUniform_fd021da851153e8c:Vm,__wbg_getParameter_585a5b83c595ada8:Wm,__wbg_getProgramInfoLog_e47d5073d57fb18d:$m,__wbg_getProgramParameter_eaf768a9b399b7cf:Km,__wbg_getShaderInfoLog_ec7e5b959e47645b:Ym,__wbg_getShaderParameter_42a35b974329561c:Jm,__wbg_getUniformLocation_8e9cc276a231ddcd:Gm,__wbg_linkProgram_25cda5f9318ea316:Xm,__wbg_pixelStorei_bee1e2da4cb1115b:qm,__wbg_polygonOffset_4cba459d8eacb66d:Zm,__wbg_renderbufferStorage_4ceec9b17dbd1e76:e1,__wbg_scissor_4b89b60091ee8f0e:t1,__wbg_shaderSource_a0001b8eab5d44f4:n1,__wbg_stencilFuncSeparate_1f0226d5d3acaf47:r1,__wbg_stencilMask_00541859199befd2:o1,__wbg_stencilMaskSeparate_5e7b9b536eac0c5d:i1,__wbg_stencilOpSeparate_153523493abc8ec8:u1,__wbg_texParameteri_1b210b807f1ea723:l1,__wbg_uniform1f_f60e1072e28b8c49:a1,__wbg_uniform1i_50124a48de1da66b:s1,__wbg_uniform4f_5b62a0acebac4494:c1,__wbg_useProgram_156511a425feb519:f1,__wbg_vertexAttribPointer_63d2aef49627302b:d1,__wbg_viewport_a93f3881c4202d5e:_1,__wbg_log_4b5638ad60bdc54a:p1,__wbg_getGamepads_8001a499f2b689fe:g1,__wbg_size_878ba1bf0c2ec606:m1,__wbg_type_ca7819eaadc2049f:w1,__wbg_name_2473476082bed625:h1,__wbg_preventDefault_3209279b490de583:y1,__wbg_get_57245cc7d7c7619d:v1,__wbg_length_6e3bbe7c8bd4dbd8:A1,__wbg_new_1d9a920c6bfc44a8:b1,__wbg_newnoargs_b5b063fc6c2f0376:S1,__wbg_get_765201544a2b6869:E1,__wbg_call_97ae9d8645dc388b:k1,__wbg_new_0b9bfdd97583284e:C1,__wbg_self_6d479506f72c6a71:x1,__wbg_window_f2557cc78490aceb:P1,__wbg_globalThis_7f206bda628d5286:I1,__wbg_global_ba75c50d1cf384f4:T1,__wbindgen_is_undefined:D1,__wbg_of_d79bf3cec607f7a4:R1,__wbg_push_740e4b286702d964:O1,__wbg_instanceof_ArrayBuffer_e5e48f4762c5610b:M1,__wbg_entries_65a76a413fc91037:L1,__wbg_is_40a66842732708e7:N1,__wbg_resolve_99fe17964f31ffc0:B1,__wbg_then_11f7a54d67b4bfad:Q1,__wbg_buffer_3f3d764d4747d564:j1,__wbg_newwithbyteoffsetandlength_890b478c8d7226ff:F1,__wbg_newwithbyteoffsetandlength_698c5100ae9c3365:z1,__wbg_newwithbyteoffsetandlength_7be13f49af2b2012:U1,__wbg_newwithbyteoffsetandlength_d9aa266703cb98be:H1,__wbg_new_8c3f0052272a457a:V1,__wbg_set_83db9690f9353e79:W1,__wbg_length_9e1ae1900cb0fbd5:$1,__wbg_newwithbyteoffsetandlength_5540e144e9b8b907:K1,__wbg_newwithbyteoffsetandlength_9cc9adccd861aa26:Y1,__wbg_newwithbyteoffsetandlength_be22e5fcf4f69ab4:J1,__wbg_instanceof_Uint8Array_971eeda69eb75003:G1,__wbg_getindex_ed9af38a6f2f9635:X1,__wbg_set_bf3f89b92d5a34bf:q1,__wbg_floor_182f4f67bb2a06bd:Z1,__wbg_random_656f2ae924b2540e:ew,__wbg_new_abda76e883ba8a5f:tw,__wbg_stack_658279fe44541cf6:nw,__wbg_error_f851667af71bcfc6:rw,__wbindgen_debug_string:ow,__wbindgen_throw:iw,__wbindgen_memory:uw,__wbindgen_closure_wrapper436:lw,__wbindgen_closure_wrapper437:aw,__wbindgen_closure_wrapper710:sw}},S_),Jn=M.memory,cw=M.__wbg_noentiendobuilder_free,fw=M.noentiendobuilder_new,dw=M.noentiendobuilder_with_canvas,_w=M.noentiendobuilder_with_roms,pw=M.noentiendobuilder_with_system,gw=M.noentiendobuilder_build,mw=M.__wbg_noentiendo_free,ww=M.noentiendo_close,hw=M.noentiendo_reset,yw=M.noentiendo_dispatch_key;M.wgpu_render_pass_set_pipeline;M.wgpu_render_pass_set_bind_group;M.wgpu_render_pass_set_vertex_buffer;M.wgpu_render_pass_set_push_constants;M.wgpu_render_pass_draw;M.wgpu_render_pass_draw_indexed;M.wgpu_render_pass_draw_indirect;M.wgpu_render_pass_draw_indexed_indirect;M.wgpu_render_pass_multi_draw_indirect;M.wgpu_render_pass_multi_draw_indexed_indirect;M.wgpu_render_pass_multi_draw_indirect_count;M.wgpu_render_pass_multi_draw_indexed_indirect_count;M.wgpu_render_pass_set_blend_constant;M.wgpu_render_pass_set_scissor_rect;M.wgpu_render_pass_set_viewport;M.wgpu_render_pass_set_stencil_reference;M.wgpu_render_pass_insert_debug_marker;M.wgpu_render_pass_push_debug_group;M.wgpu_render_pass_pop_debug_group;M.wgpu_render_pass_write_timestamp;M.wgpu_render_pass_begin_pipeline_statistics_query;M.wgpu_render_pass_end_pipeline_statistics_query;M.wgpu_compute_pass_set_pipeline;M.wgpu_compute_pass_set_bind_group;M.wgpu_compute_pass_set_push_constant;M.wgpu_compute_pass_insert_debug_marker;M.wgpu_compute_pass_push_debug_group;M.wgpu_compute_pass_pop_debug_group;M.wgpu_compute_pass_write_timestamp;M.wgpu_compute_pass_begin_pipeline_statistics_query;M.wgpu_compute_pass_end_pipeline_statistics_query;M.wgpu_compute_pass_dispatch_workgroups;M.wgpu_compute_pass_dispatch_workgroups_indirect;M.wgpu_render_bundle_set_pipeline;M.wgpu_render_bundle_set_bind_group;M.wgpu_render_bundle_set_vertex_buffer;M.wgpu_render_bundle_set_push_constants;M.wgpu_render_bundle_draw;M.wgpu_render_bundle_draw_indexed;M.wgpu_render_bundle_draw_indirect;M.wgpu_render_bundle_draw_indexed_indirect;M.wgpu_render_bundle_set_index_buffer;M.wgpu_render_bundle_pop_debug_group;M.wgpu_render_bundle_insert_debug_marker;M.wgpu_render_pass_set_index_buffer;M.wgpu_render_pass_execute_bundles;M.wgpu_render_bundle_push_debug_group;const it=M.__wbindgen_malloc,ut=M.__wbindgen_realloc,vw=M.__wbindgen_export_2,Aw=M._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0ae6b9bec113d7a1,bw=M._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hb052d1874d2bec48,Sw=M._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hbe674fadde55d84f,Ew=M.__wbindgen_exn_store,kw=M.__wbindgen_free,Cw="/assets/basic.5b426b5c.bin",xw="data:application/octet-stream;base64,HCJKVkwgHgAYJEJ+QkJCAHwiIjwiInwAHCJAQEAiHAB4JCIiIiR4AH5AQHhAQH4AfkBAeEBAQAAcIkBOQiIcAEJCQn5CQkIAHAgICAgIHAAOBAQEBEQ4AEJESHBIREIAQEBAQEBAfgBCZlpaQkJCAEJiUkpGQkIAGCRCQkIkGAB8QkJ8QEBAABgkQkJKJBoAfEJCfEhEQgA8QkA8AkI8AD4ICAgICAgAQkJCQkJCPABCQkIkJBgYAEJCQlpaZkIAQkIkGCRCQgAiIiIcCAgIAH4CBBggQH4APCAgICAgPAAAQCAQCAQCADwEBAQEBDwAAAgcKggICAgAABAgfyAQAAAAAAAAAAAACAgICAAACAAkJCQAAAAAACQkfiR+JCQACB4oHAo8CAAAYmQIECZGADBISDBKRDoABAgQAAAAAAAECBAQEAgEACAQCAgIECAACCocPhwqCAAACAg+CAgAAAAAAAAACAgQAAAAfgAAAAAAAAAAABgYAAACBAgQIEAAPEJGWmJCPAAIGCgICAg+ADxCAgwwQH4APEICHAJCPAAEDBQkfgQEAH5AeAQCRDgAHCBAfEJCPAB+QgQIEBAQADxCQjxCQjwAPEJCPgIEOAAAAAgAAAgAAAAACAAACAgQDhgwYDAYDgAAAH4AfgAAAHAYDAYMGHAAPEICDBAAEAAAAAAA/wAAAAgcPn9/HD4AEBAQEBAQEBAAAAD/AAAAAAAA/wAAAAAAAP8AAAAAAAAAAAAAAP8AACAgICAgICAgBAQEBAQEBAQAAAAA4BAICAgICAQDAAAACAgIEOAAAACAgICAgICA/4BAIBAIBAIBAQIECBAgQID/gICAgICAgP8BAQEBAQEBADx+fn5+PAAAAAAAAAD/ADZ/f38+HAgAQEBAQEBAQEAAAAAAAwQICIFCJBgYJEKBADxCQkJCPAAIHCp3KggIAAICAgICAgICCBw+fz4cCAAICAgI/wgICKBQoFCgUKBQCAgICAgICAgAAAE+VBQUAP9/Px8PBwMBAAAAAAAAAADw8PDw8PDw8AAAAAD//////wAAAAAAAAAAAAAAAAAA/4CAgICAgICAqlWqVapVqlUBAQEBAQEBAQAAAACqVapV//78+PDgwIADAwMDAwMDAwgICAgPCAgIAAAAAA8PDw8ICAgIDwAAAAAAAAD4CAgIAAAAAAAA//8AAAAADwgICAgICAj/AAAAAAAAAP8ICAgICAgI+AgICMDAwMDAwMDA4ODg4ODg4OAHBwcHBwcHB///AAAAAAAA////AAAAAAAAAAAAAP///wEBAQEBAQH/AAAAAPDw8PAPDw8PAAAAAAgICAj4AAAA8PDw8AAAAADw8PDwDw8PDxwiSlZMIB4AAAA4BDxEOgBAQFxiQmJcAAAAPEJAQjwAAgI6RkJGOgAAADxCfkA8AAwSEHwQEBAAAAA6RkY6AjxAQFxiQkJCAAgAGAgICBwABAAMBAQERDhAQERIUGhEABgICAgICBwAAAB2SUlJSQAAAFxiQkJCAAAAPEJCQjwAAABcYmJcQEAAADpGRjoCAgAAXGJAQEAAAAA+QDwCfAAQEHwQEBIMAAAAQkJCRjoAAABCQkIkGAAAAEFJSUk2AAAAQiQYJEIAAABCQkY6AjwAAH4EGCB+ADwgICAgIDwAAEAgEAgEAgA8BAQEBAQ8AAAIHCoICAgIAAAQIH8gEAAAAAAAAAAAAAgICAgAAAgAJCQkAAAAAAAkJH4kfiQkAAgeKBwKPAgAAGJkCBAmRgAwSEgwSkQ6AAQIEAAAAAAABAgQEBAIBAAgEAgICBAgAAgqHD4cKggAAAgIPggIAAAAAAAAAAgIEAAAAH4AAAAAAAAAAAAYGAAAAgQIECBAADxCRlpiQjwACBgoCAgIPgA8QgIMMEB+ADxCAhwCQjwABAwUJH4EBAB+QHgEAkQ4ABwgQHxCQjwAfkIECBAQEAA8QkI8QkI8ADxCQj4CBDgAAAAIAAAIAAAAAAgAAAgIEA4YMGAwGA4AAAB+AH4AAABwGAwGDBhwADxCAgwQABAAAAAAAP8AAAAYJEJ+QkJCAHwiIjwiInwAHCJAQEAiHAB4JCIiIiR4AH5AQHhAQH4AfkBAeEBAQAAcIkBOQiIcAEJCQn5CQkIAHAgICAgIHAAOBAQEBEQ4AEJESHBIREIAQEBAQEBAfgBCZlpaQkJCAEJiUkpGQkIAGCRCQkIkGAB8QkJ8QEBAABgkQkJKJBoAfEJCfEhEQgA8QkA8AkI8AD4ICAgICAgAQkJCQkJCPABCQkIkJBgYAEJCQlpaZkIAQkIkGCRCQgAiIiIcCAgIAH4CBBggQH4ACAgICP8ICAigUKBQoFCgUAgICAgICAgIzMwzM8zMMzPMZjOZzGYzmQAAAAAAAAAA8PDw8PDw8PAAAAAA//////8AAAAAAAAAAAAAAAAAAP+AgICAgICAgKpVqlWqVapVAQEBAQEBAQEAAAAAqlWqVZkzZsyZM2bMAwMDAwMDAwMICAgIDwgICAAAAAAPDw8PCAgICA8AAAAAAAAA+AgICAAAAAAAAP//AAAAAA8ICAgICAgI/wAAAAAAAAD/CAgICAgICPgICAjAwMDAwMDAwODg4ODg4ODgBwcHBwcHBwf//wAAAAAAAP///wAAAAAAAAAAAAD///8BAkRIUGBAAAAAAADw8PDwDw8PDwAAAAAICAgI+AAAAPDw8PAAAAAA8PDw8A8PDw8=",Pw="data:application/octet-stream;base64,Y0gQDSAs16VjMAmlDEn/hQwgod6pXqDgIHPXaBADIKHeqWOg4Ewt3yDW2qkAhQwg39+iS6AAINXfqVSgACCu2qkAhWOlDCBQ4KlLoABMG9pITBHggUkP2qKDSQ/aon8AAAAABYTmGi0bhigH+/iHmWiJAYcjNd/hhqVd5yiDSQ/aoqFURo8Tj1JDic2lY0gQAyCh3qVeSMmBkAepyKDYIBvaqbyg4CAt32jJgZAHqVSg4CAz12gQA0yh3mALdrODvdN5HvSm9XuD/LAQfAwfZ8p83lPLwX0UZHBMfbfqUXp9YzCIfn6SRJk6fkzMkcd/qqqqE4EAAAAA5nfQAuZ4rWDqyTqwCskg8O846TA46dBggE/HUlii+5qpTIVRhQCpI6DRhQGEAqkohQ+pHoUQohy9+OCVb8rQ+KkDhVCKhWWFDoUVSIUN6I79AY78AaIWhhOgBIUohCmFEYQSqOYR0ATmEjAPqVWREdER0AcKkRHREfDppRGkEoU0hDWFMIQxogCgBIYohCmgAJiRKOYopSikKSAow6nEoOEgHMqlNDjlKKqlNeUpINncqbeg4SAcyiBdxUyJwyBCWVRFUyBGUkVFDQAjIyMgQ09NTU9ET1JFIEJBU0lDICMjIw0NAKl/jU7oom2pAJWNyhD7qS6FkKnmhZGpA4WwqQ+NEOgKjUDojULojiLojkXoqT2NE+gsEuipPI0h6I0j6I0R6I4i6KkMjUzohaiFp6CDohiU4OAU8AjgDfAE4AfQAYjKEO6ExeiGn4bEqSCdAICdAIGdAIKdAIPK0PGgAITGhNim2LXgCYCFxb1I54XEqSeF1eAY8Ai14TAEqU+F1aXGySiQBOkohcZgrG8CogC9cAKdbwLo5J7Q9caemFhgINjjpZ6Fp/D6eKWq8AmlqaAAhKog6uYgheLJg9AQeKIJhp69YOedbgLK0Pfw1ckN0M6k1YSsscTJINADiND3yIShoACExoTNpaMwFsXY0BKlpIXGxaGQCrArmEiKSKWs8KGkxrHEhdkpPwbZJNkQAgmAkASmzdAEcAIJQObGID/jxKHQEakAhaypDaaw4APwAyDY46kNhdloqmiopdnJ3tACqf9gySLQCKXNSQGFzakiYAlApp/wAgmAptzwAsbcIOrm5sak1cTGsBmm2MBP0Awgi+MgGeWpAIXG8AfgGNAbIJzjaKil3PACRs1oqmhYYOAXsAa14gmAleJgIKPjTH7jID/lxtim2BbhVuEgi+OlxkggXeJohcZgoCem2NAGhsZoaNC+td8wBcq136BPyobYhcW9SOeFxITGhNVgSIXZikiYSKkAhaykxqXZEANMeuTJDdADTC/lySCQCCk/ID/jTE7jptzwA0xS48kU0ByIhMYQBiC040wg5MixxIiRxMjE1dD1qSCRxNA8ps3wA0xS48kS0AKFn8kT0AMgV+LJHdASyITGiMTVkAcgGeWgAITGTH7jyRHQDhiYaSioxdWQ7vDsIBnlTH7j6IXYmOkohcbm2K1I54XEpeCFxdDoKX/Jf9ACqV7JIJADTEzjyQ3QA0wv5abN0DDJFNAopNWxxMkg0ATExtAHwE/wuiC65aTViLHEyJHEiMTG0PWpIJHE5tzQVqbc8AUJQExS48kR0CulxskokAbpKIXGsD2m2PA5td8QB8bYIF3ikC7KyobYIF3ipcYYaSiFxtAeyRLQBKkAhZ/JHdALiITGEA0gtONMfuPJE9ADICniTH7jOEajptjo4BnQAyA/5bXgEPSG2Exd4qkAhdyFn4XNhcYgGeVMfuN4oACExKmAhciFxakoJOEwAqlQhcepNI0R6LHHkcTI0PnmyObFqYTFyNDvqeiFxMbFqSDGxMbHkcTQ+KIZhtiiAMbYteApf7ThEAIJgJXg6OAZ0O+pg4X4peAQ46k8jRHoWKn+zRLo0A+gCI1F6CxN6FD7iND1hJ6m2GCm2Oh4qTSNEejgGPAzkANMnOOiF7XhCYCFyLTgMAIpf5XhmAmAhcWgJ71J54XHvUjnhcSxxJHHiBD5yuTY0NXoteAJgIXFKX+V4L1I54XEoCepIJHEiBD7qTyNEehYTF3iSIpImEi6vQQBKRDwA2ySAGyQACDq/6Wn0BjGqNAUqRSFqKTGRqqxxLAE5qqFqUmAkcSi/4am6IaYolCtEOgp8I0Q6KAArRDoCgoKEAaE+ak90Aal+dAFqTWNE+iQCYT6rUDoCRDQCaX60AitQOgp741A6KAIrRLozRLo0PZKsBxIvffm0AapAYWY0A/J//ALyTzQBSwR6DAChqZoyvAIiNDb7hDo0MylpsWX8ByFl6owF7335kaYkAIJgKaenW8C6OAK0AKiAIaeaKhoqmhAqK1A6Ckg0PmYpMaRxGA9Lv8DPCBbEi0wAD7/XUAAKzL/PyxOVlgzMQ07TUJDWio1/zpLSEZTNjT/TEpHREEvOP9QSVlSVzk3Xk9VVEVRFBH/KVwnJCIdE18oJiUjIQAoUHigyPAYQGiQuOAIMFiAqND4IEhwmMBMT0FEDVJVTg2iAbX6SLX7IHXnaEhKSkpKII3nqmgpDyCN50iKINL/aEzS/xhp9pACaQZpOmCiArX6SLX8lfpolfzK0PNgILbnkAKF/CC255AChftgqQCNAAEg6+fJINAJIOvnySDQDxhgIODnCgoKCo0AASDr5yDg5w0AAThgyToIKQ8okAJpCGAgz//JDdD4aGhMVP2pPyDS/0xW/f8=",Iw="/assets/kernal.056d5e84.bin",Tw="/assets/char.bda28072.bin",Dw="/assets/basic.8be2d882.bin",Rw="/assets/kernal.8fc94bd8.bin",Ow="/assets/basic.89878cea.bin",Mw="/assets/char.fd0d53b8.bin",Lw="/assets/kernal.83c60d47.bin",mt=async e=>{const t=await fetch(e);if(!t.ok)throw new Error(`Failed to fetch ${e}`);const n=await t.arrayBuffer();return new Uint8Array(n)},Nw={pet:{basic:await mt(Cw),char:await mt(xw),editor:await mt(Pw),kernal:await mt(Iw)},vic:{basic:await mt(Dw),char:await mt(Tw),kernal:await mt(Rw)},c64:{basic:await mt(Ow),char:await mt(Mw),kernal:await mt(Lw)}};var ii={exports:{}},ui={};/** +`+i.stack}return{value:e,source:t,stack:o,digest:null}}function Ti(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function hu(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var qd=typeof WeakMap=="function"?WeakMap:Map;function Ec(e,t,n){n=Pt(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Fo||(Fo=!0,Pu=r),hu(e,t)},n}function kc(e,t,n){n=Pt(-1,n),n.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var o=t.value;n.payload=function(){return r(o)},n.callback=function(){hu(e,t)}}var i=e.stateNode;return i!==null&&typeof i.componentDidCatch=="function"&&(n.callback=function(){hu(e,t),typeof r!="function"&&(Kt===null?Kt=new Set([this]):Kt.add(this));var u=t.stack;this.componentDidCatch(t.value,{componentStack:u!==null?u:""})}),n}function Aa(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new qd;var o=new Set;r.set(t,o)}else o=r.get(t),o===void 0&&(o=new Set,r.set(t,o));o.has(n)||(o.add(n),e=d_.bind(null,e,t,n),t.then(e,e))}function ba(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function Sa(e,t,n,r,o){return(e.mode&1)===0?(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,n.tag===1&&(n.alternate===null?n.tag=17:(t=Pt(-1,1),t.tag=2,$t(n,t,1))),n.lanes|=1),e):(e.flags|=65536,e.lanes=o,e)}var Zd=Ot.ReactCurrentOwner,Qe=!1;function Te(e,t,n,r){t.child=e===null?rc(t,null,n,r):Un(t,e.child,n,r)}function Ea(e,t,n,r,o){n=n.render;var i=t.ref;return Bn(t,o),r=fl(e,t,n,r,i,o),n=dl(),e!==null&&!Qe?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Rt(e,t,o)):(ie&&n&&Zu(t),t.flags|=1,Te(e,t,r,o),t.child)}function ka(e,t,n,r,o){if(e===null){var i=n.type;return typeof i=="function"&&!bl(i)&&i.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=i,Cc(e,t,i,r,o)):(e=mo(n.type,null,r,t,t.mode,o),e.ref=t.ref,e.return=t,t.child=e)}if(i=e.child,(e.lanes&o)===0){var u=i.memoizedProps;if(n=n.compare,n=n!==null?n:kr,n(u,r)&&e.ref===t.ref)return Rt(e,t,o)}return t.flags|=1,e=Jt(i,r),e.ref=t.ref,e.return=t,t.child=e}function Cc(e,t,n,r,o){if(e!==null){var i=e.memoizedProps;if(kr(i,r)&&e.ref===t.ref)if(Qe=!1,t.pendingProps=r=i,(e.lanes&o)!==0)(e.flags&131072)!==0&&(Qe=!0);else return t.lanes=e.lanes,Rt(e,t,o)}return yu(e,t,n,r,o)}function xc(e,t,n){var r=t.pendingProps,o=r.children,i=e!==null?e.memoizedState:null;if(r.mode==="hidden")if((t.mode&1)===0)t.memoizedState={baseLanes:0,cachePool:null,transitions:null},te(Rn,We),We|=n;else{if((n&1073741824)===0)return e=i!==null?i.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,te(Rn,We),We|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=i!==null?i.baseLanes:n,te(Rn,We),We|=r}else i!==null?(r=i.baseLanes|n,t.memoizedState=null):r=n,te(Rn,We),We|=r;return Te(e,t,o,n),t.child}function Pc(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function yu(e,t,n,r,o){var i=Fe(n)?dn:Ie.current;return i=Fn(t,i),Bn(t,o),n=fl(e,t,n,r,i,o),r=dl(),e!==null&&!Qe?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Rt(e,t,o)):(ie&&r&&Zu(t),t.flags|=1,Te(e,t,n,o),t.child)}function Ca(e,t,n,r,o){if(Fe(n)){var i=!0;To(t)}else i=!1;if(Bn(t,o),t.stateNode===null)_o(e,t),tc(t,n,r),wu(t,n,r,o),r=!0;else if(e===null){var u=t.stateNode,a=t.memoizedProps;u.props=a;var s=u.context,c=n.contextType;typeof c=="object"&&c!==null?c=nt(c):(c=Fe(n)?dn:Ie.current,c=Fn(t,c));var m=n.getDerivedStateFromProps,g=typeof m=="function"||typeof u.getSnapshotBeforeUpdate=="function";g||typeof u.UNSAFE_componentWillReceiveProps!="function"&&typeof u.componentWillReceiveProps!="function"||(a!==r||s!==c)&&wa(t,u,r,c),Bt=!1;var p=t.memoizedState;u.state=p,Lo(t,r,u,o),s=t.memoizedState,a!==r||p!==s||je.current||Bt?(typeof m=="function"&&(mu(t,n,m,r),s=t.memoizedState),(a=Bt||ma(t,n,a,r,p,s,c))?(g||typeof u.UNSAFE_componentWillMount!="function"&&typeof u.componentWillMount!="function"||(typeof u.componentWillMount=="function"&&u.componentWillMount(),typeof u.UNSAFE_componentWillMount=="function"&&u.UNSAFE_componentWillMount()),typeof u.componentDidMount=="function"&&(t.flags|=4194308)):(typeof u.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),u.props=r,u.state=s,u.context=c,r=a):(typeof u.componentDidMount=="function"&&(t.flags|=4194308),r=!1)}else{u=t.stateNode,Zs(e,t),a=t.memoizedProps,c=t.type===t.elementType?a:st(t.type,a),u.props=c,g=t.pendingProps,p=u.context,s=n.contextType,typeof s=="object"&&s!==null?s=nt(s):(s=Fe(n)?dn:Ie.current,s=Fn(t,s));var h=n.getDerivedStateFromProps;(m=typeof h=="function"||typeof u.getSnapshotBeforeUpdate=="function")||typeof u.UNSAFE_componentWillReceiveProps!="function"&&typeof u.componentWillReceiveProps!="function"||(a!==g||p!==s)&&wa(t,u,r,s),Bt=!1,p=t.memoizedState,u.state=p,Lo(t,r,u,o);var y=t.memoizedState;a!==g||p!==y||je.current||Bt?(typeof h=="function"&&(mu(t,n,h,r),y=t.memoizedState),(c=Bt||ma(t,n,c,r,p,y,s)||!1)?(m||typeof u.UNSAFE_componentWillUpdate!="function"&&typeof u.componentWillUpdate!="function"||(typeof u.componentWillUpdate=="function"&&u.componentWillUpdate(r,y,s),typeof u.UNSAFE_componentWillUpdate=="function"&&u.UNSAFE_componentWillUpdate(r,y,s)),typeof u.componentDidUpdate=="function"&&(t.flags|=4),typeof u.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof u.componentDidUpdate!="function"||a===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),typeof u.getSnapshotBeforeUpdate!="function"||a===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=y),u.props=r,u.state=y,u.context=s,r=c):(typeof u.componentDidUpdate!="function"||a===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),typeof u.getSnapshotBeforeUpdate!="function"||a===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),r=!1)}return vu(e,t,n,r,i,o)}function vu(e,t,n,r,o,i){Pc(e,t);var u=(t.flags&128)!==0;if(!r&&!u)return o&&fa(t,n,!1),Rt(e,t,i);r=t.stateNode,Zd.current=t;var a=u&&typeof n.getDerivedStateFromError!="function"?null:r.render();return t.flags|=1,e!==null&&u?(t.child=Un(t,e.child,null,i),t.child=Un(t,null,a,i)):Te(e,t,a,i),t.memoizedState=r.state,o&&fa(t,n,!0),t.child}function Ic(e){var t=e.stateNode;t.pendingContext?ca(e,t.pendingContext,t.pendingContext!==t.context):t.context&&ca(e,t.context,!1),ll(e,t.containerInfo)}function xa(e,t,n,r,o){return zn(),tl(o),t.flags|=256,Te(e,t,n,r),t.child}var Au={dehydrated:null,treeContext:null,retryLane:0};function bu(e){return{baseLanes:e,cachePool:null,transitions:null}}function Tc(e,t,n){var r=t.pendingProps,o=le.current,i=!1,u=(t.flags&128)!==0,a;if((a=u)||(a=e!==null&&e.memoizedState===null?!1:(o&2)!==0),a?(i=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(o|=1),te(le,o&1),e===null)return pu(t),e=t.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?((t.mode&1)===0?t.lanes=1:e.data==="$!"?t.lanes=8:t.lanes=1073741824,null):(u=r.children,e=r.fallback,i?(r=t.mode,i=t.child,u={mode:"hidden",children:u},(r&1)===0&&i!==null?(i.childLanes=0,i.pendingProps=u):i=ei(u,r,0,null),e=fn(e,r,n,null),i.return=t,e.return=t,i.sibling=e,t.child=i,t.child.memoizedState=bu(n),t.memoizedState=Au,e):gl(t,u));if(o=e.memoizedState,o!==null&&(a=o.dehydrated,a!==null))return e_(e,t,u,r,a,o,n);if(i){i=r.fallback,u=t.mode,o=e.child,a=o.sibling;var s={mode:"hidden",children:r.children};return(u&1)===0&&t.child!==o?(r=t.child,r.childLanes=0,r.pendingProps=s,t.deletions=null):(r=Jt(o,s),r.subtreeFlags=o.subtreeFlags&14680064),a!==null?i=Jt(a,i):(i=fn(i,u,n,null),i.flags|=2),i.return=t,r.return=t,r.sibling=i,t.child=r,r=i,i=t.child,u=e.child.memoizedState,u=u===null?bu(n):{baseLanes:u.baseLanes|n,cachePool:null,transitions:u.transitions},i.memoizedState=u,i.childLanes=e.childLanes&~n,t.memoizedState=Au,r}return i=e.child,e=i.sibling,r=Jt(i,{mode:"visible",children:r.children}),(t.mode&1)===0&&(r.lanes=n),r.return=t,r.sibling=null,e!==null&&(n=t.deletions,n===null?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=r,t.memoizedState=null,r}function gl(e,t){return t=ei({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function eo(e,t,n,r){return r!==null&&tl(r),Un(t,e.child,null,n),e=gl(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function e_(e,t,n,r,o,i,u){if(n)return t.flags&256?(t.flags&=-257,r=Ti(Error(S(422))),eo(e,t,u,r)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(i=r.fallback,o=t.mode,r=ei({mode:"visible",children:r.children},o,0,null),i=fn(i,o,u,null),i.flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,(t.mode&1)!==0&&Un(t,e.child,null,u),t.child.memoizedState=bu(u),t.memoizedState=Au,i);if((t.mode&1)===0)return eo(e,t,u,null);if(o.data==="$!"){if(r=o.nextSibling&&o.nextSibling.dataset,r)var a=r.dgst;return r=a,i=Error(S(419)),r=Ti(i,r,void 0),eo(e,t,u,r)}if(a=(u&e.childLanes)!==0,Qe||a){if(r=be,r!==null){switch(u&-u){case 4:o=2;break;case 16:o=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:o=32;break;case 536870912:o=268435456;break;default:o=0}o=(o&(r.suspendedLanes|u))!==0?0:o,o!==0&&o!==i.retryLane&&(i.retryLane=o,Dt(e,o),_t(r,e,o,-1))}return Al(),r=Ti(Error(S(421))),eo(e,t,u,r)}return o.data==="$?"?(t.flags|=128,t.child=e.child,t=__.bind(null,e),o._reactRetry=t,null):(e=i.treeContext,$e=Wt(o.nextSibling),Ke=t,ie=!0,ft=null,e!==null&&(qe[Ze++]=Ct,qe[Ze++]=xt,qe[Ze++]=_n,Ct=e.id,xt=e.overflow,_n=t),t=gl(t,r.children),t.flags|=4096,t)}function Pa(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),gu(e.return,t,n)}function Di(e,t,n,r,o){var i=e.memoizedState;i===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=o)}function Dc(e,t,n){var r=t.pendingProps,o=r.revealOrder,i=r.tail;if(Te(e,t,r.children,n),r=le.current,(r&2)!==0)r=r&1|2,t.flags|=128;else{if(e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Pa(e,n,t);else if(e.tag===19)Pa(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(te(le,r),(t.mode&1)===0)t.memoizedState=null;else switch(o){case"forwards":for(n=t.child,o=null;n!==null;)e=n.alternate,e!==null&&No(e)===null&&(o=n),n=n.sibling;n=o,n===null?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),Di(t,!1,o,n,i);break;case"backwards":for(n=null,o=t.child,t.child=null;o!==null;){if(e=o.alternate,e!==null&&No(e)===null){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}Di(t,!0,n,null,i);break;case"together":Di(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function _o(e,t){(t.mode&1)===0&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Rt(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),gn|=t.lanes,(n&t.childLanes)===0)return null;if(e!==null&&t.child!==e.child)throw Error(S(153));if(t.child!==null){for(e=t.child,n=Jt(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=Jt(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function t_(e,t,n){switch(t.tag){case 3:Ic(t),zn();break;case 5:oc(t);break;case 1:Fe(t.type)&&To(t);break;case 4:ll(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,o=t.memoizedProps.value;te(Oo,r._currentValue),r._currentValue=o;break;case 13:if(r=t.memoizedState,r!==null)return r.dehydrated!==null?(te(le,le.current&1),t.flags|=128,null):(n&t.child.childLanes)!==0?Tc(e,t,n):(te(le,le.current&1),e=Rt(e,t,n),e!==null?e.sibling:null);te(le,le.current&1);break;case 19:if(r=(n&t.childLanes)!==0,(e.flags&128)!==0){if(r)return Dc(e,t,n);t.flags|=128}if(o=t.memoizedState,o!==null&&(o.rendering=null,o.tail=null,o.lastEffect=null),te(le,le.current),r)break;return null;case 22:case 23:return t.lanes=0,xc(e,t,n)}return Rt(e,t,n)}var Rc,Su,Oc,Mc;Rc=function(e,t){for(var n=t.child;n!==null;){if(n.tag===5||n.tag===6)e.appendChild(n.stateNode);else if(n.tag!==4&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}};Su=function(){};Oc=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,sn(bt.current);var i=null;switch(n){case"input":o=Wi(e,o),r=Wi(e,r),i=[];break;case"select":o=se({},o,{value:void 0}),r=se({},r,{value:void 0}),i=[];break;case"textarea":o=Yi(e,o),r=Yi(e,r),i=[];break;default:typeof o.onClick!="function"&&typeof r.onClick=="function"&&(e.onclick=Po)}Gi(n,r);var u;n=null;for(c in o)if(!r.hasOwnProperty(c)&&o.hasOwnProperty(c)&&o[c]!=null)if(c==="style"){var a=o[c];for(u in a)a.hasOwnProperty(u)&&(n||(n={}),n[u]="")}else c!=="dangerouslySetInnerHTML"&&c!=="children"&&c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&c!=="autoFocus"&&(hr.hasOwnProperty(c)?i||(i=[]):(i=i||[]).push(c,null));for(c in r){var s=r[c];if(a=o?.[c],r.hasOwnProperty(c)&&s!==a&&(s!=null||a!=null))if(c==="style")if(a){for(u in a)!a.hasOwnProperty(u)||s&&s.hasOwnProperty(u)||(n||(n={}),n[u]="");for(u in s)s.hasOwnProperty(u)&&a[u]!==s[u]&&(n||(n={}),n[u]=s[u])}else n||(i||(i=[]),i.push(c,n)),n=s;else c==="dangerouslySetInnerHTML"?(s=s?s.__html:void 0,a=a?a.__html:void 0,s!=null&&a!==s&&(i=i||[]).push(c,s)):c==="children"?typeof s!="string"&&typeof s!="number"||(i=i||[]).push(c,""+s):c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&(hr.hasOwnProperty(c)?(s!=null&&c==="onScroll"&&re("scroll",e),i||a===s||(i=[])):(i=i||[]).push(c,s))}n&&(i=i||[]).push("style",n);var c=i;(t.updateQueue=c)&&(t.flags|=4)}};Mc=function(e,t,n,r){n!==r&&(t.flags|=4)};function nr(e,t){if(!ie)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function xe(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var o=e.child;o!==null;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags&14680064,r|=o.flags&14680064,o.return=e,o=o.sibling;else for(o=e.child;o!==null;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags,r|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function n_(e,t,n){var r=t.pendingProps;switch(el(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return xe(t),null;case 1:return Fe(t.type)&&Io(),xe(t),null;case 3:return r=t.stateNode,Hn(),oe(je),oe(Ie),sl(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),(e===null||e.child===null)&&(qr(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,ft!==null&&(Du(ft),ft=null))),Su(e,t),xe(t),null;case 5:al(t);var o=sn(Tr.current);if(n=t.type,e!==null&&t.stateNode!=null)Oc(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(t.stateNode===null)throw Error(S(166));return xe(t),null}if(e=sn(bt.current),qr(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[vt]=t,r[Pr]=i,e=(t.mode&1)!==0,n){case"dialog":re("cancel",r),re("close",r);break;case"iframe":case"object":case"embed":re("load",r);break;case"video":case"audio":for(o=0;o<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),n==="select"&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[vt]=t,e[Pr]=r,Rc(e,t,!1,!1),t.stateNode=e;e:{switch(u=Xi(n,r),n){case"dialog":re("cancel",e),re("close",e),o=r;break;case"iframe":case"object":case"embed":re("load",e),o=r;break;case"video":case"audio":for(o=0;oWn&&(t.flags|=128,r=!0,nr(i,!1),t.lanes=4194304)}else{if(!r)if(e=No(u),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),nr(i,!0),i.tail===null&&i.tailMode==="hidden"&&!u.alternate&&!ie)return xe(t),null}else 2*de()-i.renderingStartTime>Wn&&n!==1073741824&&(t.flags|=128,r=!0,nr(i,!1),t.lanes=4194304);i.isBackwards?(u.sibling=t.child,t.child=u):(n=i.last,n!==null?n.sibling=u:t.child=u,i.last=u)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=de(),t.sibling=null,n=le.current,te(le,r?n&1|2:n&1),t):(xe(t),null);case 22:case 23:return vl(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&(t.mode&1)!==0?(We&1073741824)!==0&&(xe(t),t.subtreeFlags&6&&(t.flags|=8192)):xe(t),null;case 24:return null;case 25:return null}throw Error(S(156,t.tag))}function r_(e,t){switch(el(t),t.tag){case 1:return Fe(t.type)&&Io(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Hn(),oe(je),oe(Ie),sl(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return al(t),null;case 13:if(oe(le),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(S(340));zn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return oe(le),null;case 4:return Hn(),null;case 10:return ol(t.type._context),null;case 22:case 23:return vl(),null;case 24:return null;default:return null}}var to=!1,Pe=!1,o_=typeof WeakSet=="function"?WeakSet:Set,O=null;function Dn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){fe(e,t,r)}else n.current=null}function Eu(e,t,n){try{n()}catch(r){fe(e,t,r)}}var Ia=!1;function i_(e,t){if(lu=ko,e=Qs(),qu(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var u=0,a=-1,s=-1,c=0,m=0,g=e,p=null;t:for(;;){for(var h;g!==n||o!==0&&g.nodeType!==3||(a=u+o),g!==i||r!==0&&g.nodeType!==3||(s=u+r),g.nodeType===3&&(u+=g.nodeValue.length),(h=g.firstChild)!==null;)p=g,g=h;for(;;){if(g===e)break t;if(p===n&&++c===o&&(a=u),p===i&&++m===r&&(s=u),(h=g.nextSibling)!==null)break;g=p,p=g.parentNode}g=h}n=a===-1||s===-1?null:{start:a,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(au={focusedElem:e,selectionRange:n},ko=!1,O=t;O!==null;)if(t=O,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,O=e;else for(;O!==null;){t=O;try{var y=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(y!==null){var v=y.memoizedProps,I=y.memoizedState,d=t.stateNode,f=d.getSnapshotBeforeUpdate(t.elementType===t.type?v:st(t.type,v),I);d.__reactInternalSnapshotBeforeUpdate=f}break;case 3:var _=t.stateNode.containerInfo;_.nodeType===1?_.textContent="":_.nodeType===9&&_.documentElement&&_.removeChild(_.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(S(163))}}catch(w){fe(t,t.return,w)}if(e=t.sibling,e!==null){e.return=t.return,O=e;break}O=t.return}return y=Ia,Ia=!1,y}function pr(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var i=o.destroy;o.destroy=void 0,i!==void 0&&Eu(t,n,i)}o=o.next}while(o!==r)}}function qo(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function ku(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Lc(e){var t=e.alternate;t!==null&&(e.alternate=null,Lc(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[vt],delete t[Pr],delete t[fu],delete t[zd],delete t[Ud])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Nc(e){return e.tag===5||e.tag===3||e.tag===4}function Ta(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Nc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Cu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Po));else if(r!==4&&(e=e.child,e!==null))for(Cu(e,t,n),e=e.sibling;e!==null;)Cu(e,t,n),e=e.sibling}function xu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(xu(e,t,n),e=e.sibling;e!==null;)xu(e,t,n),e=e.sibling}var Se=null,ct=!1;function Lt(e,t,n){for(n=n.child;n!==null;)Bc(e,t,n),n=n.sibling}function Bc(e,t,n){if(At&&typeof At.onCommitFiberUnmount=="function")try{At.onCommitFiberUnmount(Vo,n)}catch{}switch(n.tag){case 5:Pe||Dn(n,t);case 6:var r=Se,o=ct;Se=null,Lt(e,t,n),Se=r,ct=o,Se!==null&&(ct?(e=Se,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Se.removeChild(n.stateNode));break;case 18:Se!==null&&(ct?(e=Se,n=n.stateNode,e.nodeType===8?Ei(e.parentNode,n):e.nodeType===1&&Ei(e,n),Sr(e)):Ei(Se,n.stateNode));break;case 4:r=Se,o=ct,Se=n.stateNode.containerInfo,ct=!0,Lt(e,t,n),Se=r,ct=o;break;case 0:case 11:case 14:case 15:if(!Pe&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var i=o,u=i.destroy;i=i.tag,u!==void 0&&((i&2)!==0||(i&4)!==0)&&Eu(n,t,u),o=o.next}while(o!==r)}Lt(e,t,n);break;case 1:if(!Pe&&(Dn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){fe(n,t,a)}Lt(e,t,n);break;case 21:Lt(e,t,n);break;case 22:n.mode&1?(Pe=(r=Pe)||n.memoizedState!==null,Lt(e,t,n),Pe=r):Lt(e,t,n);break;default:Lt(e,t,n)}}function Da(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new o_),t.forEach(function(r){var o=p_.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function at(e,t){var n=t.deletions;if(n!==null)for(var r=0;ro&&(o=u),r&=~i}if(r=o,r=de()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*l_(r/1960))-r,10e?16:e,zt===null)var r=!1;else{if(e=zt,zt=null,zo=0,(K&6)!==0)throw Error(S(331));var o=K;for(K|=4,O=e.current;O!==null;){var i=O,u=i.child;if((O.flags&16)!==0){var a=i.deletions;if(a!==null){for(var s=0;sde()-hl?cn(e,0):wl|=n),ze(e,t)}function Wc(e,t){t===0&&((e.mode&1)===0?t=1:(t=$r,$r<<=1,($r&130023424)===0&&($r=4194304)));var n=Re();e=Dt(e,t),e!==null&&(Nr(e,t,n),ze(e,n))}function __(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Wc(e,n)}function p_(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(S(314))}r!==null&&r.delete(t),Wc(e,n)}var $c;$c=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||je.current)Qe=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return Qe=!1,t_(e,t,n);Qe=(e.flags&131072)!==0}else Qe=!1,ie&&(t.flags&1048576)!==0&&Js(t,Ro,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;_o(e,t),e=t.pendingProps;var o=Fn(t,Ie.current);Bn(t,n),o=fl(null,t,r,e,o,n);var i=dl();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Fe(r)?(i=!0,To(t)):i=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,ul(t),o.updater=Go,t.stateNode=o,o._reactInternals=t,wu(t,r,e,n),t=vu(null,t,r,!0,i,n)):(t.tag=0,ie&&i&&Zu(t),Te(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(_o(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=m_(r),e=st(r,e),o){case 0:t=yu(null,t,r,e,n);break e;case 1:t=Ca(null,t,r,e,n);break e;case 11:t=Ea(null,t,r,e,n);break e;case 14:t=ka(null,t,r,st(r.type,e),n);break e}throw Error(S(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:st(r,o),yu(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:st(r,o),Ca(e,t,r,o,n);case 3:e:{if(Ic(t),e===null)throw Error(S(387));r=t.pendingProps,i=t.memoizedState,o=i.element,Zs(e,t),Lo(t,r,null,n);var u=t.memoizedState;if(r=u.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:u.cache,pendingSuspenseBoundaries:u.pendingSuspenseBoundaries,transitions:u.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){o=Vn(Error(S(423)),t),t=xa(e,t,r,n,o);break e}else if(r!==o){o=Vn(Error(S(424)),t),t=xa(e,t,r,n,o);break e}else for($e=Wt(t.stateNode.containerInfo.firstChild),Ke=t,ie=!0,ft=null,n=rc(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(zn(),r===o){t=Rt(e,t,n);break e}Te(e,t,r,n)}t=t.child}return t;case 5:return oc(t),e===null&&pu(t),r=t.type,o=t.pendingProps,i=e!==null?e.memoizedProps:null,u=o.children,su(r,o)?u=null:i!==null&&su(r,i)&&(t.flags|=32),Pc(e,t),Te(e,t,u,n),t.child;case 6:return e===null&&pu(t),null;case 13:return Tc(e,t,n);case 4:return ll(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Un(t,null,r,n):Te(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:st(r,o),Ea(e,t,r,o,n);case 7:return Te(e,t,t.pendingProps,n),t.child;case 8:return Te(e,t,t.pendingProps.children,n),t.child;case 12:return Te(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,i=t.memoizedProps,u=o.value,te(Oo,r._currentValue),r._currentValue=u,i!==null)if(pt(i.value,u)){if(i.children===o.children&&!je.current){t=Rt(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var a=i.dependencies;if(a!==null){u=i.child;for(var s=a.firstContext;s!==null;){if(s.context===r){if(i.tag===1){s=Pt(-1,n&-n),s.tag=2;var c=i.updateQueue;if(c!==null){c=c.shared;var m=c.pending;m===null?s.next=s:(s.next=m.next,m.next=s),c.pending=s}}i.lanes|=n,s=i.alternate,s!==null&&(s.lanes|=n),gu(i.return,n,t),a.lanes|=n;break}s=s.next}}else if(i.tag===10)u=i.type===t.type?null:i.child;else if(i.tag===18){if(u=i.return,u===null)throw Error(S(341));u.lanes|=n,a=u.alternate,a!==null&&(a.lanes|=n),gu(u,n,t),u=i.sibling}else u=i.child;if(u!==null)u.return=i;else for(u=i;u!==null;){if(u===t){u=null;break}if(i=u.sibling,i!==null){i.return=u.return,u=i;break}u=u.return}i=u}Te(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,Bn(t,n),o=nt(o),r=r(o),t.flags|=1,Te(e,t,r,n),t.child;case 14:return r=t.type,o=st(r,t.pendingProps),o=st(r.type,o),ka(e,t,r,o,n);case 15:return Cc(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:st(r,o),_o(e,t),t.tag=1,Fe(r)?(e=!0,To(t)):e=!1,Bn(t,n),tc(t,r,o),wu(t,r,o,n),vu(null,t,r,!0,e,n);case 19:return Dc(e,t,n);case 22:return xc(e,t,n)}throw Error(S(156,t.tag))};function Kc(e,t){return ys(e,t)}function g_(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function et(e,t,n,r){return new g_(e,t,n,r)}function bl(e){return e=e.prototype,!(!e||!e.isReactComponent)}function m_(e){if(typeof e=="function")return bl(e)?1:0;if(e!=null){if(e=e.$$typeof,e===zu)return 11;if(e===Uu)return 14}return 2}function Jt(e,t){var n=e.alternate;return n===null?(n=et(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function mo(e,t,n,r,o,i){var u=2;if(r=e,typeof e=="function")bl(e)&&(u=1);else if(typeof e=="string")u=5;else e:switch(e){case bn:return fn(n.children,o,i,t);case Fu:u=8,o|=8;break;case zi:return e=et(12,n,t,o|2),e.elementType=zi,e.lanes=i,e;case Ui:return e=et(13,n,t,o),e.elementType=Ui,e.lanes=i,e;case Hi:return e=et(19,n,t,o),e.elementType=Hi,e.lanes=i,e;case ns:return ei(n,o,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case es:u=10;break e;case ts:u=9;break e;case zu:u=11;break e;case Uu:u=14;break e;case Nt:u=16,r=null;break e}throw Error(S(130,e==null?e:typeof e,""))}return t=et(u,n,t,o),t.elementType=e,t.type=r,t.lanes=i,t}function fn(e,t,n,r){return e=et(7,e,r,t),e.lanes=n,e}function ei(e,t,n,r){return e=et(22,e,r,t),e.elementType=ns,e.lanes=n,e.stateNode={isHidden:!1},e}function Ri(e,t,n){return e=et(6,e,null,t),e.lanes=n,e}function Oi(e,t,n){return t=et(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function w_(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=_i(0),this.expirationTimes=_i(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=_i(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function Sl(e,t,n,r,o,i,u,a,s){return e=new w_(e,t,n,a,s),t===1?(t=1,i===!0&&(t|=8)):t=0,i=et(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},ul(i),e}function h_(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(n){console.error(n)}}t(),e.exports=Je})(Ja);var ja=Ja.exports;ji.createRoot=ja.createRoot,ji.hydrateRoot=ja.hydrateRoot;const S_="/assets/libnoentiendo_bg.e098007d.wasm",E_=async(e={},t)=>{let n;if(t.startsWith("data:")){const r=t.replace(/^data:.*?base64,/,"");let o;if(typeof Buffer=="function"&&typeof Buffer.from=="function")o=Buffer.from(r,"base64");else if(typeof atob=="function"){const i=atob(r);o=new Uint8Array(i.length);for(let u=0;u"u"?(0,module.require)("util").TextDecoder:TextDecoder;let qc=new C_("utf-8",{ignoreBOM:!0,fatal:!0});qc.decode();let Mi=new Uint8Array;function wo(){return Mi.byteLength===0&&(Mi=new Uint8Array(Jn.buffer)),Mi}function he(e,t){return qc.decode(wo().subarray(e,e+t))}function P(e){wr===kt.length&&kt.push(kt.length+1);const t=wr;return wr=kt[t],kt[t]=e,t}let Ue=0;const x_=typeof TextEncoder>"u"?(0,module.require)("util").TextEncoder:TextEncoder;let ho=new x_("utf-8");const P_=typeof ho.encodeInto=="function"?function(e,t){return ho.encodeInto(e,t)}:function(e,t){const n=ho.encode(e);return t.set(n),{read:e.length,written:n.length}};function ot(e,t,n){if(n===void 0){const a=ho.encode(e),s=t(a.length);return wo().subarray(s,s+a.length).set(a),Ue=a.length,s}let r=e.length,o=t(r);const i=wo();let u=0;for(;u127)break;i[o+u]=a}if(u!==r){u!==0&&(e=e.slice(u)),o=n(o,r,r=u+e.length*3);const a=wo().subarray(o+u,o+r),s=P_(e,a);u+=s.written}return Ue=u,o}function Y(e){return e==null}let Li=new Int32Array;function ue(){return Li.byteLength===0&&(Li=new Int32Array(Jn.buffer)),Li}let Ni=new Float64Array;function I_(){return Ni.byteLength===0&&(Ni=new Float64Array(Jn.buffer)),Ni}function Ru(e){const t=typeof e;if(t=="number"||t=="boolean"||e==null)return`${e}`;if(t=="string")return`"${e}"`;if(t=="symbol"){const o=e.description;return o==null?"Symbol":`Symbol(${o})`}if(t=="function"){const o=e.name;return typeof o=="string"&&o.length>0?`Function(${o})`:"Function"}if(Array.isArray(e)){const o=e.length;let i="[";o>0&&(i+=Ru(e[0]));for(let u=1;u1)r=n[1];else return toString.call(e);if(r=="Object")try{return"Object("+JSON.stringify(e)+")"}catch{return"Object"}return e instanceof Error?`${e.name}: ${e.message} +${e.stack}`:r}function xl(e,t,n,r){const o={a:e,b:t,cnt:1,dtor:n},i=(...u)=>{o.cnt++;const a=o.a;o.a=0;try{return r(a,o.b,...u)}finally{--o.cnt===0?vw.get(o.dtor)(a,o.b):o.a=a}};return i.original=o,i}function T_(e,t){Aw(e,t)}function D_(e,t,n){bw(e,t,P(n))}function R_(e,t,n){Sw(e,t,P(n))}let Bi=new Float32Array;function O_(){return Bi.byteLength===0&&(Bi=new Float32Array(Jn.buffer)),Bi}function Xe(e,t){return O_().subarray(e/4,e/4+t)}function yn(e,t){return ue().subarray(e/4,e/4+t)}let Qi=new Uint32Array;function M_(){return Qi.byteLength===0&&(Qi=new Uint32Array(Jn.buffer)),Qi}function L_(e,t){return M_().subarray(e/4,e/4+t)}function ne(e,t){try{return e.apply(this,t)}catch(n){Ew(P(n))}}function Zc(e){return()=>{throw new Error(`${e} is not defined`)}}class Pl{static __wrap(t){const n=Object.create(Pl.prototype);return n.ptr=t,n}__destroy_into_raw(){const t=this.ptr;return this.ptr=0,t}free(){const t=this.__destroy_into_raw();mw(t)}close(){ww(this.ptr)}reset(){hw(this.ptr)}dispatch_key(t,n){yw(this.ptr,P(t),n)}}class un{static __wrap(t){const n=Object.create(un.prototype);return n.ptr=t,n}__destroy_into_raw(){const t=this.ptr;return this.ptr=0,t}free(){const t=this.__destroy_into_raw();cw(t)}constructor(){const t=fw();return un.__wrap(t)}with_canvas(t){const n=this.__destroy_into_raw(),r=dw(n,P(t));return un.__wrap(r)}with_roms(t){const n=this.__destroy_into_raw(),r=_w(n,P(t));return un.__wrap(r)}with_system(t){const n=this.__destroy_into_raw(),r=ot(t,it,ut),i=pw(n,r,Ue);return un.__wrap(i)}build(){const t=gw(this.ptr);return Pl.__wrap(t)}}function N_(e){Xc(e)}function B_(e,t){const n=he(e,t);return P(n)}function Q_(e,t){const n=new Error(he(e,t));return P(n)}function j_(e,t){alert(he(e,t))}function F_(e,t,n){const r=prompt(he(t,n)),o=ot(r,it,ut),i=Ue;ue()[e/4+1]=i,ue()[e/4+0]=o}function z_(e){return!l(e)}function U_(e){const t=l(e);return P(t)}function H_(e,t){const n=l(t),r=typeof n=="string"?n:void 0;var o=Y(r)?0:ot(r,it,ut),i=Ue;ue()[e/4+1]=i,ue()[e/4+0]=o}function V_(e){return typeof l(e)=="string"}function W_(e){const t=l(e);return typeof t=="object"&&t!==null}function $_(e,t){return l(e)==l(t)}function K_(e){const t=l(e);return typeof t=="boolean"?t?1:0:2}function Y_(e,t){const n=l(t),r=typeof n=="number"?n:void 0;I_()[e/8+1]=Y(r)?0:r,ue()[e/4+0]=!Y(r)}function J_(e){return P(e)}function G_(e){const t=Xc(e).original;return t.cnt--==1?(t.a=0,!0):!1}function X_(e){let t;try{t=l(e)instanceof WebGL2RenderingContext}catch{t=!1}return t}function q_(e,t,n){l(e).beginQuery(t>>>0,l(n))}function Z_(e,t,n,r,o,i){l(e).bindBufferRange(t>>>0,n>>>0,l(r),o,i)}function ep(e,t,n){l(e).bindSampler(t>>>0,l(n))}function tp(e,t){l(e).bindVertexArray(l(t))}function np(e,t,n,r,o,i,u,a,s,c,m){l(e).blitFramebuffer(t,n,r,o,i,u,a,s,c>>>0,m>>>0)}function rp(e,t,n,r){l(e).bufferData(t>>>0,n,r>>>0)}function op(e,t,n,r){l(e).bufferData(t>>>0,l(n),r>>>0)}function ip(e,t,n,r){l(e).bufferSubData(t>>>0,n,l(r))}function up(e,t,n,r,o){l(e).clearBufferfi(t>>>0,n,r,o)}function lp(e,t,n,r,o){l(e).clearBufferfv(t>>>0,n,Xe(r,o))}function ap(e,t,n,r,o){l(e).clearBufferiv(t>>>0,n,yn(r,o))}function sp(e,t,n,r,o){l(e).clearBufferuiv(t>>>0,n,L_(r,o))}function cp(e,t,n,r){return l(e).clientWaitSync(l(t),n>>>0,r>>>0)}function fp(e,t,n,r,o,i,u,a,s,c){l(e).compressedTexSubImage2D(t>>>0,n,r,o,i,u,a>>>0,s,c)}function dp(e,t,n,r,o,i,u,a,s){l(e).compressedTexSubImage2D(t>>>0,n,r,o,i,u,a>>>0,l(s))}function _p(e,t,n,r,o,i,u,a,s,c,m,g){l(e).compressedTexSubImage3D(t>>>0,n,r,o,i,u,a,s,c>>>0,m,g)}function pp(e,t,n,r,o,i,u,a,s,c,m){l(e).compressedTexSubImage3D(t>>>0,n,r,o,i,u,a,s,c>>>0,l(m))}function gp(e,t,n,r,o,i){l(e).copyBufferSubData(t>>>0,n>>>0,r,o,i)}function mp(e,t,n,r,o,i,u,a,s,c){l(e).copyTexSubImage3D(t>>>0,n,r,o,i,u,a,s,c)}function wp(e){const t=l(e).createSampler();return Y(t)?0:P(t)}function hp(e){const t=l(e).createVertexArray();return Y(t)?0:P(t)}function yp(e,t){l(e).deleteQuery(l(t))}function vp(e,t){l(e).deleteSampler(l(t))}function Ap(e,t){l(e).deleteSync(l(t))}function bp(e,t){l(e).deleteVertexArray(l(t))}function Sp(e,t,n,r,o){l(e).drawArraysInstanced(t>>>0,n,r,o)}function Ep(e,t){l(e).drawBuffers(l(t))}function kp(e,t,n,r,o,i){l(e).drawElementsInstanced(t>>>0,n,r>>>0,o,i)}function Cp(e,t){l(e).endQuery(t>>>0)}function xp(e,t,n){const r=l(e).fenceSync(t>>>0,n>>>0);return Y(r)?0:P(r)}function Pp(e,t,n,r,o,i){l(e).framebufferTextureLayer(t>>>0,n>>>0,l(r),o,i)}function Ip(e,t,n,r){l(e).getBufferSubData(t>>>0,n,l(r))}function Tp(){return ne(function(e,t,n){const r=l(e).getIndexedParameter(t>>>0,n>>>0);return P(r)},arguments)}function Dp(e,t,n){const r=l(e).getQueryParameter(l(t),n>>>0);return P(r)}function Rp(e,t,n){const r=l(e).getSyncParameter(l(t),n>>>0);return P(r)}function Op(e,t,n,r){return l(e).getUniformBlockIndex(l(t),he(n,r))}function Mp(){return ne(function(e,t,n){l(e).invalidateFramebuffer(t>>>0,l(n))},arguments)}function Lp(e,t){l(e).readBuffer(t>>>0)}function Np(){return ne(function(e,t,n,r,o,i,u,a){l(e).readPixels(t,n,r,o,i>>>0,u>>>0,l(a))},arguments)}function Bp(){return ne(function(e,t,n,r,o,i,u,a){l(e).readPixels(t,n,r,o,i>>>0,u>>>0,a)},arguments)}function Qp(e,t,n,r,o,i){l(e).renderbufferStorageMultisample(t>>>0,n,r>>>0,o,i)}function jp(e,t,n,r){l(e).samplerParameterf(l(t),n>>>0,r)}function Fp(e,t,n,r){l(e).samplerParameteri(l(t),n>>>0,r)}function zp(e,t,n,r,o,i){l(e).texStorage2D(t>>>0,n,r>>>0,o,i)}function Up(e,t,n,r,o,i,u){l(e).texStorage3D(t>>>0,n,r>>>0,o,i,u)}function Hp(){return ne(function(e,t,n,r,o,i,u,a,s,c){l(e).texSubImage2D(t>>>0,n,r,o,i,u,a>>>0,s>>>0,l(c))},arguments)}function Vp(){return ne(function(e,t,n,r,o,i,u,a,s,c){l(e).texSubImage2D(t>>>0,n,r,o,i,u,a>>>0,s>>>0,c)},arguments)}function Wp(){return ne(function(e,t,n,r,o,i,u,a,s,c,m,g){l(e).texSubImage3D(t>>>0,n,r,o,i,u,a,s,c>>>0,m>>>0,g)},arguments)}function $p(){return ne(function(e,t,n,r,o,i,u,a,s,c,m,g){l(e).texSubImage3D(t>>>0,n,r,o,i,u,a,s,c>>>0,m>>>0,l(g))},arguments)}function Kp(e,t,n,r){l(e).uniform2fv(l(t),Xe(n,r))}function Yp(e,t,n,r){l(e).uniform2iv(l(t),yn(n,r))}function Jp(e,t,n,r){l(e).uniform3fv(l(t),Xe(n,r))}function Gp(e,t,n,r){l(e).uniform3iv(l(t),yn(n,r))}function Xp(e,t,n,r){l(e).uniform4fv(l(t),Xe(n,r))}function qp(e,t,n,r){l(e).uniform4iv(l(t),yn(n,r))}function Zp(e,t,n,r){l(e).uniformBlockBinding(l(t),n>>>0,r>>>0)}function eg(e,t,n,r,o){l(e).uniformMatrix2fv(l(t),n!==0,Xe(r,o))}function tg(e,t,n,r,o){l(e).uniformMatrix3fv(l(t),n!==0,Xe(r,o))}function ng(e,t,n,r,o){l(e).uniformMatrix4fv(l(t),n!==0,Xe(r,o))}function rg(e,t,n){l(e).vertexAttribDivisor(t>>>0,n>>>0)}function og(e,t,n,r,o,i){l(e).vertexAttribIPointer(t>>>0,n,r>>>0,o,i)}function ig(e,t){l(e).activeTexture(t>>>0)}function ug(e,t,n){l(e).attachShader(l(t),l(n))}function lg(e,t,n){l(e).bindBuffer(t>>>0,l(n))}function ag(e,t,n){l(e).bindFramebuffer(t>>>0,l(n))}function sg(e,t,n){l(e).bindRenderbuffer(t>>>0,l(n))}function cg(e,t,n){l(e).bindTexture(t>>>0,l(n))}function fg(e,t,n,r,o){l(e).blendColor(t,n,r,o)}function dg(e,t){l(e).blendEquation(t>>>0)}function _g(e,t,n){l(e).blendEquationSeparate(t>>>0,n>>>0)}function pg(e,t,n){l(e).blendFunc(t>>>0,n>>>0)}function gg(e,t,n,r,o){l(e).blendFuncSeparate(t>>>0,n>>>0,r>>>0,o>>>0)}function mg(e,t,n,r,o){l(e).colorMask(t!==0,n!==0,r!==0,o!==0)}function wg(e,t){l(e).compileShader(l(t))}function hg(e,t,n,r,o,i,u,a,s){l(e).copyTexSubImage2D(t>>>0,n,r,o,i,u,a,s)}function yg(e){const t=l(e).createBuffer();return Y(t)?0:P(t)}function vg(e){const t=l(e).createFramebuffer();return Y(t)?0:P(t)}function Ag(e){const t=l(e).createProgram();return Y(t)?0:P(t)}function bg(e){const t=l(e).createRenderbuffer();return Y(t)?0:P(t)}function Sg(e,t){const n=l(e).createShader(t>>>0);return Y(n)?0:P(n)}function Eg(e){const t=l(e).createTexture();return Y(t)?0:P(t)}function kg(e,t){l(e).cullFace(t>>>0)}function Cg(e,t){l(e).deleteBuffer(l(t))}function xg(e,t){l(e).deleteFramebuffer(l(t))}function Pg(e,t){l(e).deleteProgram(l(t))}function Ig(e,t){l(e).deleteRenderbuffer(l(t))}function Tg(e,t){l(e).deleteShader(l(t))}function Dg(e,t){l(e).deleteTexture(l(t))}function Rg(e,t){l(e).depthFunc(t>>>0)}function Og(e,t){l(e).depthMask(t!==0)}function Mg(e,t,n){l(e).depthRange(t,n)}function Lg(e,t){l(e).disable(t>>>0)}function Ng(e,t){l(e).disableVertexAttribArray(t>>>0)}function Bg(e,t,n,r){l(e).drawArrays(t>>>0,n,r)}function Qg(e,t,n,r,o){l(e).drawElements(t>>>0,n,r>>>0,o)}function jg(e,t){l(e).enable(t>>>0)}function Fg(e,t){l(e).enableVertexAttribArray(t>>>0)}function zg(e,t,n,r,o){l(e).framebufferRenderbuffer(t>>>0,n>>>0,r>>>0,l(o))}function Ug(e,t,n,r,o,i){l(e).framebufferTexture2D(t>>>0,n>>>0,r>>>0,l(o),i)}function Hg(e,t){l(e).frontFace(t>>>0)}function Vg(e,t,n){const r=l(e).getActiveUniform(l(t),n>>>0);return Y(r)?0:P(r)}function Wg(){return ne(function(e,t,n){const r=l(e).getExtension(he(t,n));return Y(r)?0:P(r)},arguments)}function $g(){return ne(function(e,t){const n=l(e).getParameter(t>>>0);return P(n)},arguments)}function Kg(e,t,n){const r=l(t).getProgramInfoLog(l(n));var o=Y(r)?0:ot(r,it,ut),i=Ue;ue()[e/4+1]=i,ue()[e/4+0]=o}function Yg(e,t,n){const r=l(e).getProgramParameter(l(t),n>>>0);return P(r)}function Jg(e,t,n){const r=l(t).getShaderInfoLog(l(n));var o=Y(r)?0:ot(r,it,ut),i=Ue;ue()[e/4+1]=i,ue()[e/4+0]=o}function Gg(e,t,n){const r=l(e).getShaderParameter(l(t),n>>>0);return P(r)}function Xg(e){const t=l(e).getSupportedExtensions();return Y(t)?0:P(t)}function qg(e,t,n,r){const o=l(e).getUniformLocation(l(t),he(n,r));return Y(o)?0:P(o)}function Zg(e,t){l(e).linkProgram(l(t))}function e0(e,t,n){l(e).pixelStorei(t>>>0,n)}function t0(e,t,n){l(e).polygonOffset(t,n)}function n0(e,t,n,r,o){l(e).renderbufferStorage(t>>>0,n>>>0,r,o)}function r0(e,t,n,r,o){l(e).scissor(t,n,r,o)}function o0(e,t,n,r){l(e).shaderSource(l(t),he(n,r))}function i0(e,t,n,r,o){l(e).stencilFuncSeparate(t>>>0,n>>>0,r,o>>>0)}function u0(e,t){l(e).stencilMask(t>>>0)}function l0(e,t,n){l(e).stencilMaskSeparate(t>>>0,n>>>0)}function a0(e,t,n,r,o){l(e).stencilOpSeparate(t>>>0,n>>>0,r>>>0,o>>>0)}function s0(e,t,n,r){l(e).texParameteri(t>>>0,n>>>0,r)}function c0(e,t,n){l(e).uniform1f(l(t),n)}function f0(e,t,n){l(e).uniform1i(l(t),n)}function d0(e,t,n,r,o,i){l(e).uniform4f(l(t),n,r,o,i)}function _0(e,t){l(e).useProgram(l(t))}function p0(e,t,n,r,o,i,u){l(e).vertexAttribPointer(t>>>0,n,r>>>0,o!==0,i,u)}function g0(e,t,n,r,o){l(e).viewport(t,n,r,o)}function m0(e){let t;try{t=l(e)instanceof Window}catch{t=!1}return t}function w0(e){const t=l(e).document;return Y(t)?0:P(t)}function h0(e){const t=l(e).navigator;return P(t)}function y0(e,t){l(e).clearInterval(t)}function v0(){return ne(function(e,t,n){return l(e).setInterval(l(t),n)},arguments)}function A0(){return ne(function(e,t,n){const r=l(e).querySelector(he(t,n));return Y(r)?0:P(r)},arguments)}function b0(e){const t=l(e).attributes;return P(t)}function S0(){return ne(function(e,t,n,r,o){l(e).setAttribute(he(t,n),he(r,o))},arguments)}function E0(e,t,n,r){l(e).bufferData(t>>>0,n,r>>>0)}function k0(e,t,n,r){l(e).bufferData(t>>>0,l(n),r>>>0)}function C0(e,t,n,r){l(e).bufferSubData(t>>>0,n,l(r))}function x0(e,t,n,r,o,i,u,a,s){l(e).compressedTexSubImage2D(t>>>0,n,r,o,i,u,a>>>0,l(s))}function P0(){return ne(function(e,t,n,r,o,i,u,a){l(e).readPixels(t,n,r,o,i>>>0,u>>>0,l(a))},arguments)}function I0(){return ne(function(e,t,n,r,o,i,u,a,s,c){l(e).texSubImage2D(t>>>0,n,r,o,i,u,a>>>0,s>>>0,l(c))},arguments)}function T0(e,t,n,r){l(e).uniform2fv(l(t),Xe(n,r))}function D0(e,t,n,r){l(e).uniform2iv(l(t),yn(n,r))}function R0(e,t,n,r){l(e).uniform3fv(l(t),Xe(n,r))}function O0(e,t,n,r){l(e).uniform3iv(l(t),yn(n,r))}function M0(e,t,n,r){l(e).uniform4fv(l(t),Xe(n,r))}function L0(e,t,n,r){l(e).uniform4iv(l(t),yn(n,r))}function N0(e,t,n,r,o){l(e).uniformMatrix2fv(l(t),n!==0,Xe(r,o))}function B0(e,t,n,r,o){l(e).uniformMatrix3fv(l(t),n!==0,Xe(r,o))}function Q0(e,t,n,r,o){l(e).uniformMatrix4fv(l(t),n!==0,Xe(r,o))}function j0(e,t){l(e).activeTexture(t>>>0)}function F0(e,t,n){l(e).attachShader(l(t),l(n))}function z0(e,t,n){l(e).bindBuffer(t>>>0,l(n))}function U0(e,t,n){l(e).bindFramebuffer(t>>>0,l(n))}function H0(e,t,n){l(e).bindRenderbuffer(t>>>0,l(n))}function V0(e,t,n){l(e).bindTexture(t>>>0,l(n))}function W0(e,t,n,r,o){l(e).blendColor(t,n,r,o)}function $0(e,t){l(e).blendEquation(t>>>0)}function K0(e,t,n){l(e).blendEquationSeparate(t>>>0,n>>>0)}function Y0(e,t,n){l(e).blendFunc(t>>>0,n>>>0)}function J0(e,t,n,r,o){l(e).blendFuncSeparate(t>>>0,n>>>0,r>>>0,o>>>0)}function G0(e,t,n,r,o){l(e).colorMask(t!==0,n!==0,r!==0,o!==0)}function X0(e,t){l(e).compileShader(l(t))}function q0(e,t,n,r,o,i,u,a,s){l(e).copyTexSubImage2D(t>>>0,n,r,o,i,u,a,s)}function Z0(e){const t=l(e).createBuffer();return Y(t)?0:P(t)}function em(e){const t=l(e).createFramebuffer();return Y(t)?0:P(t)}function tm(e){const t=l(e).createProgram();return Y(t)?0:P(t)}function nm(e){const t=l(e).createRenderbuffer();return Y(t)?0:P(t)}function rm(e,t){const n=l(e).createShader(t>>>0);return Y(n)?0:P(n)}function om(e){const t=l(e).createTexture();return Y(t)?0:P(t)}function im(e,t){l(e).cullFace(t>>>0)}function um(e,t){l(e).deleteBuffer(l(t))}function lm(e,t){l(e).deleteFramebuffer(l(t))}function am(e,t){l(e).deleteProgram(l(t))}function sm(e,t){l(e).deleteRenderbuffer(l(t))}function cm(e,t){l(e).deleteShader(l(t))}function fm(e,t){l(e).deleteTexture(l(t))}function dm(e,t){l(e).depthFunc(t>>>0)}function _m(e,t){l(e).depthMask(t!==0)}function pm(e,t,n){l(e).depthRange(t,n)}function gm(e,t){l(e).disable(t>>>0)}function mm(e,t){l(e).disableVertexAttribArray(t>>>0)}function wm(e,t,n,r){l(e).drawArrays(t>>>0,n,r)}function hm(e,t,n,r,o){l(e).drawElements(t>>>0,n,r>>>0,o)}function ym(e,t){l(e).enable(t>>>0)}function vm(e,t){l(e).enableVertexAttribArray(t>>>0)}function Am(e,t,n,r,o){l(e).framebufferRenderbuffer(t>>>0,n>>>0,r>>>0,l(o))}function bm(e,t,n,r,o,i){l(e).framebufferTexture2D(t>>>0,n>>>0,r>>>0,l(o),i)}function Sm(e,t){l(e).frontFace(t>>>0)}function Em(e,t,n){const r=l(e).getActiveUniform(l(t),n>>>0);return Y(r)?0:P(r)}function km(){return ne(function(e,t){const n=l(e).getParameter(t>>>0);return P(n)},arguments)}function Cm(e,t,n){const r=l(t).getProgramInfoLog(l(n));var o=Y(r)?0:ot(r,it,ut),i=Ue;ue()[e/4+1]=i,ue()[e/4+0]=o}function xm(e,t,n){const r=l(e).getProgramParameter(l(t),n>>>0);return P(r)}function Pm(e,t,n){const r=l(t).getShaderInfoLog(l(n));var o=Y(r)?0:ot(r,it,ut),i=Ue;ue()[e/4+1]=i,ue()[e/4+0]=o}function Im(e,t,n){const r=l(e).getShaderParameter(l(t),n>>>0);return P(r)}function Tm(e,t,n,r){const o=l(e).getUniformLocation(l(t),he(n,r));return Y(o)?0:P(o)}function Dm(e,t){l(e).linkProgram(l(t))}function Rm(e,t,n){l(e).pixelStorei(t>>>0,n)}function Om(e,t,n){l(e).polygonOffset(t,n)}function Mm(e,t,n,r,o){l(e).renderbufferStorage(t>>>0,n>>>0,r,o)}function Lm(e,t,n,r,o){l(e).scissor(t,n,r,o)}function Nm(e,t,n,r){l(e).shaderSource(l(t),he(n,r))}function Bm(e,t,n,r,o){l(e).stencilFuncSeparate(t>>>0,n>>>0,r,o>>>0)}function Qm(e,t){l(e).stencilMask(t>>>0)}function jm(e,t,n){l(e).stencilMaskSeparate(t>>>0,n>>>0)}function Fm(e,t,n,r,o){l(e).stencilOpSeparate(t>>>0,n>>>0,r>>>0,o>>>0)}function zm(e,t,n,r){l(e).texParameteri(t>>>0,n>>>0,r)}function Um(e,t,n){l(e).uniform1f(l(t),n)}function Hm(e,t,n){l(e).uniform1i(l(t),n)}function Vm(e,t,n,r,o,i){l(e).uniform4f(l(t),n,r,o,i)}function Wm(e,t){l(e).useProgram(l(t))}function $m(e,t,n,r,o,i,u){l(e).vertexAttribPointer(t>>>0,n,r>>>0,o!==0,i,u)}function Km(e,t,n,r,o){l(e).viewport(t,n,r,o)}function Ym(e){console.log(l(e))}function Jm(e,t,n,r,o){l(e).drawArraysInstancedANGLE(t>>>0,n,r,o)}function Gm(e,t,n,r,o,i){l(e).drawElementsInstancedANGLE(t>>>0,n,r>>>0,o,i)}function Xm(e,t,n){l(e).vertexAttribDivisorANGLE(t>>>0,n>>>0)}function qm(e){return l(e).now()}function Zm(e){let t;try{t=l(e)instanceof Gamepad}catch{t=!1}return t}function e1(e){const t=l(e).buttons;return P(t)}function t1(e){let t;try{t=l(e)instanceof GamepadButton}catch{t=!1}return t}function n1(e){return l(e).pressed}function r1(e,t){const n=l(t).code,r=ot(n,it,ut),o=Ue;ue()[e/4+1]=o,ue()[e/4+0]=r}function o1(e,t){l(e).drawBuffersWEBGL(l(t))}function i1(){return ne(function(e){const t=l(e).getGamepads();return P(t)},arguments)}function u1(e){let t;try{t=l(e)instanceof HTMLCanvasElement}catch{t=!1}return t}function l1(e,t){l(e).width=t>>>0}function a1(e,t){l(e).height=t>>>0}function s1(){return ne(function(e,t,n,r){const o=l(e).getContext(he(t,n),l(r));return Y(o)?0:P(o)},arguments)}function c1(e,t){const n=l(t).value,r=ot(n,it,ut),o=Ue;ue()[e/4+1]=o,ue()[e/4+0]=r}function f1(e){l(e).preventDefault()}function d1(e){return l(e).size}function _1(e){return l(e).type}function p1(e,t){const n=l(t).name,r=ot(n,it,ut),o=Ue;ue()[e/4+1]=o,ue()[e/4+0]=r}function g1(e,t){l(e).bindVertexArrayOES(l(t))}function m1(e){const t=l(e).createVertexArrayOES();return Y(t)?0:P(t)}function w1(e,t){l(e).deleteVertexArrayOES(l(t))}function h1(){return ne(function(e,t,n,r){l(e).addEventListener(he(t,n),l(r))},arguments)}function y1(e,t,n){const r=l(e).getNamedItem(he(t,n));return Y(r)?0:P(r)}function v1(e,t){const n=l(e)[t>>>0];return P(n)}function A1(e){return l(e).length}function b1(){const e=new Array;return P(e)}function S1(e,t){const n=new Function(he(e,t));return P(n)}function E1(){return ne(function(e,t){const n=Reflect.get(l(e),l(t));return P(n)},arguments)}function k1(){return ne(function(e,t){const n=l(e).call(l(t));return P(n)},arguments)}function C1(){const e=new Object;return P(e)}function x1(){return ne(function(){const e=self.self;return P(e)},arguments)}function P1(){return ne(function(){const e=window.window;return P(e)},arguments)}function I1(){return ne(function(){const e=globalThis.globalThis;return P(e)},arguments)}function T1(){return ne(function(){const e=global.global;return P(e)},arguments)}function D1(e){return l(e)===void 0}function R1(e){const t=Array.of(l(e));return P(t)}function O1(e,t){return l(e).push(l(t))}function M1(e){let t;try{t=l(e)instanceof ArrayBuffer}catch{t=!1}return t}function L1(e){const t=Object.entries(l(e));return P(t)}function N1(e,t){return Object.is(l(e),l(t))}function B1(e){const t=Promise.resolve(l(e));return P(t)}function Q1(e,t){const n=l(e).then(l(t));return P(n)}function j1(e){const t=l(e).buffer;return P(t)}function F1(e,t,n){const r=new Int8Array(l(e),t>>>0,n>>>0);return P(r)}function z1(e,t,n){const r=new Int16Array(l(e),t>>>0,n>>>0);return P(r)}function U1(e,t,n){const r=new Int32Array(l(e),t>>>0,n>>>0);return P(r)}function H1(e,t,n){const r=new Uint8Array(l(e),t>>>0,n>>>0);return P(r)}function V1(e){const t=new Uint8Array(l(e));return P(t)}function W1(e,t,n){l(e).set(l(t),n>>>0)}function $1(e){return l(e).length}function K1(e,t,n){const r=new Uint16Array(l(e),t>>>0,n>>>0);return P(r)}function Y1(e,t,n){const r=new Uint32Array(l(e),t>>>0,n>>>0);return P(r)}function J1(e,t,n){const r=new Float32Array(l(e),t>>>0,n>>>0);return P(r)}function G1(e){let t;try{t=l(e)instanceof Uint8Array}catch{t=!1}return t}function X1(e,t){return l(e)[t>>>0]}function q1(){return ne(function(e,t,n){return Reflect.set(l(e),l(t),l(n))},arguments)}const Z1=typeof Math.floor=="function"?Math.floor:Zc("Math.floor"),ew=typeof Math.random=="function"?Math.random:Zc("Math.random");function tw(){const e=new Error;return P(e)}function nw(e,t){const n=l(t).stack,r=ot(n,it,ut),o=Ue;ue()[e/4+1]=o,ue()[e/4+0]=r}function rw(e,t){try{console.error(he(e,t))}finally{kw(e,t)}}function ow(e,t){const n=Ru(l(t)),r=ot(n,it,ut),o=Ue;ue()[e/4+1]=o,ue()[e/4+0]=r}function iw(e,t){throw new Error(he(e,t))}function uw(){return P(Jn)}function lw(e,t,n){const r=xl(e,t,130,T_);return P(r)}function aw(e,t,n){const r=xl(e,t,133,D_);return P(r)}function sw(e,t,n){const r=xl(e,t,203,R_);return P(r)}URL=globalThis.URL;const M=await E_({"./libnoentiendo_bg.js":{__wbindgen_object_drop_ref:N_,__wbindgen_string_new:B_,__wbindgen_error_new:Q_,__wbg_alert_4ec518553ecb260d:j_,__wbg_prompt_cd54bd8801e664bd:F_,__wbindgen_is_falsy:z_,__wbindgen_object_clone_ref:U_,__wbindgen_string_get:H_,__wbindgen_is_string:V_,__wbindgen_is_object:W_,__wbindgen_jsval_loose_eq:$_,__wbindgen_boolean_get:K_,__wbindgen_number_get:Y_,__wbindgen_number_new:J_,__wbindgen_cb_drop:G_,__wbg_instanceof_WebGl2RenderingContext_fcfa91cd777063f3:X_,__wbg_beginQuery_909ec673d606f873:q_,__wbg_bindBufferRange_b8f6dc19661d5cf7:Z_,__wbg_bindSampler_4b0e0e598e2cae44:ep,__wbg_bindVertexArray_9d12800e272184b0:tp,__wbg_blitFramebuffer_cdc1ebf043046b70:np,__wbg_bufferData_6ce28904b25c8be9:rp,__wbg_bufferData_8d206d7adf6751c0:op,__wbg_bufferSubData_0e04c6c7fec3c949:ip,__wbg_clearBufferfi_92173f77d7147a2f:up,__wbg_clearBufferfv_5cc4edeacbcf72e8:lp,__wbg_clearBufferiv_8bb0c2b97eedc22b:ap,__wbg_clearBufferuiv_1f5c5e9baa9a3d9b:sp,__wbg_clientWaitSync_ad323ab9e423d0cf:cp,__wbg_compressedTexSubImage2D_5b2a7dc8dc7b3e73:fp,__wbg_compressedTexSubImage2D_fd1cef4f6a5da5c3:dp,__wbg_compressedTexSubImage3D_0df5a8ddb9ebafc2:_p,__wbg_compressedTexSubImage3D_9c916feb243112db:pp,__wbg_copyBufferSubData_11187dccce72b79b:gp,__wbg_copyTexSubImage3D_7a262558a6a33f2e:mp,__wbg_createSampler_288fd761eabe283d:wp,__wbg_createVertexArray_8467a75e68fec199:hp,__wbg_deleteQuery_77a7ae09eda297e1:yp,__wbg_deleteSampler_ec3ca2243d8cfcad:vp,__wbg_deleteSync_48aed3df05f4f497:Ap,__wbg_deleteVertexArray_00194a31d79df7e5:bp,__wbg_drawArraysInstanced_951a1d7e32c4f855:Sp,__wbg_drawBuffers_23c1572f12f90db2:Ep,__wbg_drawElementsInstanced_2e05a96af17fe284:kp,__wbg_endQuery_05baee8fc782e5f0:Cp,__wbg_fenceSync_91d72c970c880844:xp,__wbg_framebufferTextureLayer_d5e78fc74b8261e3:Pp,__wbg_getBufferSubData_6b00169c609c16f7:Ip,__wbg_getIndexedParameter_d4a2b68e14a022a1:Tp,__wbg_getQueryParameter_358ea490fb85e05c:Dp,__wbg_getSyncParameter_ab2f9499a91faae0:Rp,__wbg_getUniformBlockIndex_a6f3a994dcc7399d:Op,__wbg_invalidateFramebuffer_802e38619851791e:Mp,__wbg_readBuffer_f20d42ed12643534:Lp,__wbg_readPixels_e855be1f94815442:Np,__wbg_readPixels_5d4e6205291096f0:Bp,__wbg_renderbufferStorageMultisample_3e76453eed60554b:Qp,__wbg_samplerParameterf_6eda655d7213cb18:jp,__wbg_samplerParameteri_390f1debfe40f83b:Fp,__wbg_texStorage2D_d25a76ad1b1ea98f:zp,__wbg_texStorage3D_19979792a7a67f59:Up,__wbg_texSubImage2D_421e29fed0db07ab:Hp,__wbg_texSubImage2D_f06e46b3b25ee691:Vp,__wbg_texSubImage3D_ebb9e6f80d19a411:Wp,__wbg_texSubImage3D_591b8511a3c7593a:$p,__wbg_uniform2fv_a611afaf4a045f7e:Kp,__wbg_uniform2iv_b1b33c9425d5791b:Yp,__wbg_uniform3fv_740a7286bf6328ee:Jp,__wbg_uniform3iv_df752fa54b2b8b7b:Gp,__wbg_uniform4fv_737873ef0bcd5e6c:Xp,__wbg_uniform4iv_67eed4073c7e55c5:qp,__wbg_uniformBlockBinding_50ced0c985f91a02:Zp,__wbg_uniformMatrix2fv_f4fc5e6214cc5549:eg,__wbg_uniformMatrix3fv_a02aa02ecb8e5f99:tg,__wbg_uniformMatrix4fv_68d11b378757596e:ng,__wbg_vertexAttribDivisor_2dc16945a591d4c6:rg,__wbg_vertexAttribIPointer_167c7ed4319992e7:og,__wbg_activeTexture_6a9afd67cc0ade73:ig,__wbg_attachShader_90ad543fb1bccb18:ug,__wbg_bindBuffer_66e359418f5c82d7:lg,__wbg_bindFramebuffer_5c01742edd5d843a:ag,__wbg_bindRenderbuffer_f66dee160b94e5ef:sg,__wbg_bindTexture_ae9620ea4a6ffb97:cg,__wbg_blendColor_50e203e2f58784cb:fg,__wbg_blendEquation_72746aedc87e3f72:dg,__wbg_blendEquationSeparate_f0abe930082fff02:_g,__wbg_blendFunc_99b48b64bde98c6f:pg,__wbg_blendFuncSeparate_cecb7dfda39dc38d:gg,__wbg_colorMask_12687df5490e9bc9:mg,__wbg_compileShader_822f38928f6f2a08:wg,__wbg_copyTexSubImage2D_4c72e3ef713b65e6:hg,__wbg_createBuffer_a6cffb7f7d5b92a3:yg,__wbg_createFramebuffer_d5f3985ce3652661:vg,__wbg_createProgram_dc6b23d3caa1d86e:Ag,__wbg_createRenderbuffer_531167a301a60e27:bg,__wbg_createShader_46a66dce5a9e22d0:Sg,__wbg_createTexture_269f67d411bdc4dc:Eg,__wbg_cullFace_d6b862a4ad70b414:kg,__wbg_deleteBuffer_12fd7d93834069ef:Cg,__wbg_deleteFramebuffer_d7551444a28f508e:xg,__wbg_deleteProgram_ce56000628d7f1ce:Pg,__wbg_deleteRenderbuffer_58c540348fb8606d:Ig,__wbg_deleteShader_246e6e678f3eb957:Tg,__wbg_deleteTexture_68a539339fd87792:Dg,__wbg_depthFunc_1015c3364a49cd2f:Rg,__wbg_depthMask_55f538b7411e5023:Og,__wbg_depthRange_c6ed3371d3b601f8:Mg,__wbg_disable_1659dc1efb5fb934:Lg,__wbg_disableVertexAttribArray_6f3d27dd0ad6aabf:Ng,__wbg_drawArrays_d587302f7a868d91:Bg,__wbg_drawElements_241caa588795bcb1:Qg,__wbg_enable_4791414dce6f602a:jg,__wbg_enableVertexAttribArray_a1ffc091f3999354:Fg,__wbg_framebufferRenderbuffer_963b305ac8cb6fd6:zg,__wbg_framebufferTexture2D_4b810902dffa1ef3:Ug,__wbg_frontFace_97d7f9493791771d:Hg,__wbg_getActiveUniform_97472b76b9daa461:Vg,__wbg_getExtension_e7912bce04869d40:Wg,__wbg_getParameter_4e2ccc745690476a:$g,__wbg_getProgramInfoLog_1e37a3d1d090ec1c:Kg,__wbg_getProgramParameter_acf4ae158143e2b2:Yg,__wbg_getShaderInfoLog_451545b963646762:Jg,__wbg_getShaderParameter_6cd8c36fded266ea:Gg,__wbg_getSupportedExtensions_b84494641d686623:Xg,__wbg_getUniformLocation_0da0c93f626244a2:qg,__wbg_linkProgram_c33885d9ea798810:Zg,__wbg_pixelStorei_51c83dc5117bea35:e0,__wbg_polygonOffset_7af170d91752512c:t0,__wbg_renderbufferStorage_0b6269243d09a9f7:n0,__wbg_scissor_b1b9e314ab6aac29:r0,__wbg_shaderSource_5111981e7afb61fb:o0,__wbg_stencilFuncSeparate_2939e543fa4caa77:i0,__wbg_stencilMask_4eb0f989e4108b15:u0,__wbg_stencilMaskSeparate_69e9937a9533f4ab:l0,__wbg_stencilOpSeparate_c57c8bbe863e9f57:a0,__wbg_texParameteri_21fd6b6b394882c9:s0,__wbg_uniform1f_ade6c204580582c8:c0,__wbg_uniform1i_49986febd844f2c4:f0,__wbg_uniform4f_d564461a6e4fdfe0:d0,__wbg_useProgram_35a58ac1e0d9577b:_0,__wbg_vertexAttribPointer_3b06d737566f0745:p0,__wbg_viewport_319ab5302767fcc9:g0,__wbg_instanceof_Window_acc97ff9f5d2c7b4:m0,__wbg_document_3ead31dbcad65886:w0,__wbg_navigator_d1dcf282b97e2495:h0,__wbg_clearInterval_9d8e1ff2b921f41f:y0,__wbg_setInterval_b6f2e23785929613:v0,__wbg_querySelector_3628dc2c3319e7e0:A0,__wbg_attributes_a4140d6795dd5707:b0,__wbg_setAttribute_d8436c14a59ab1af:S0,__wbg_bufferData_d6fac0d761e08fec:E0,__wbg_bufferData_a33528a74dd300f4:k0,__wbg_bufferSubData_a116fea11850b38f:C0,__wbg_compressedTexSubImage2D_30943b654d04ee44:x0,__wbg_readPixels_db685489e1779d63:P0,__wbg_texSubImage2D_cb339dd200dd1179:I0,__wbg_uniform2fv_3aad4d306a1cb8af:T0,__wbg_uniform2iv_8c390eac30cb1de3:D0,__wbg_uniform3fv_d1ef35c158c348e7:R0,__wbg_uniform3iv_76acc51e8e6fe1a4:O0,__wbg_uniform4fv_a513dc4d02f192d3:M0,__wbg_uniform4iv_19aa13960dc767c2:L0,__wbg_uniformMatrix2fv_4173a282fcaa5508:N0,__wbg_uniformMatrix3fv_2b7de3010c8ed627:B0,__wbg_uniformMatrix4fv_f16e4a5553357886:Q0,__wbg_activeTexture_02b7c73c76c2c06b:j0,__wbg_attachShader_f4d51147351a1906:F0,__wbg_bindBuffer_8b5135aa633680f5:z0,__wbg_bindFramebuffer_080d0b0cf22e1645:U0,__wbg_bindRenderbuffer_6da549f066c1b8a5:H0,__wbg_bindTexture_6f1dec563e82e818:V0,__wbg_blendColor_3bea829c60b1f6f2:W0,__wbg_blendEquation_5d5abe2ee10109a9:$0,__wbg_blendEquationSeparate_fa6aebc5cd0c5285:K0,__wbg_blendFunc_49ea28240d4c1084:Y0,__wbg_blendFuncSeparate_9fef8acb74d50df5:J0,__wbg_colorMask_bc13c97d0db65962:G0,__wbg_compileShader_22b038faa1f49857:X0,__wbg_copyTexSubImage2D_e815f93a9ef52dd2:q0,__wbg_createBuffer_6e747d928c9ba46d:Z0,__wbg_createFramebuffer_9b5b0507480146cd:em,__wbg_createProgram_1c5f8dffd1066e71:tm,__wbg_createRenderbuffer_69c2f0554298bf89:nm,__wbg_createShader_4017d9fbc36659af:rm,__wbg_createTexture_4ce49e8a8c655124:om,__wbg_cullFace_aa9f8eea262690c0:im,__wbg_deleteBuffer_6fd9bca7f8a6d9de:um,__wbg_deleteFramebuffer_2617e39d2c39b4da:lm,__wbg_deleteProgram_e8636e3cb5a18a59:am,__wbg_deleteRenderbuffer_e5b3450b8b57b395:sm,__wbg_deleteShader_89369612f61ec145:cm,__wbg_deleteTexture_5c40169772519141:fm,__wbg_depthFunc_2ac2c797a8220f09:dm,__wbg_depthMask_88ab181c23c32dcd:_m,__wbg_depthRange_5dccc27b5cdd74b3:pm,__wbg_disable_6835d16c2cd3fa26:gm,__wbg_disableVertexAttribArray_ab474d273ff59265:mm,__wbg_drawArrays_c0dcb4151e0bf007:wm,__wbg_drawElements_e09dbef58c8f099a:hm,__wbg_enable_fc393941ac400f72:ym,__wbg_enableVertexAttribArray_3d21f4936ad4a378:vm,__wbg_framebufferRenderbuffer_6b8dd5a111d341e6:Am,__wbg_framebufferTexture2D_499d1c21458d0113:bm,__wbg_frontFace_5fd354be6327d46b:Sm,__wbg_getActiveUniform_fd021da851153e8c:Em,__wbg_getParameter_585a5b83c595ada8:km,__wbg_getProgramInfoLog_e47d5073d57fb18d:Cm,__wbg_getProgramParameter_eaf768a9b399b7cf:xm,__wbg_getShaderInfoLog_ec7e5b959e47645b:Pm,__wbg_getShaderParameter_42a35b974329561c:Im,__wbg_getUniformLocation_8e9cc276a231ddcd:Tm,__wbg_linkProgram_25cda5f9318ea316:Dm,__wbg_pixelStorei_bee1e2da4cb1115b:Rm,__wbg_polygonOffset_4cba459d8eacb66d:Om,__wbg_renderbufferStorage_4ceec9b17dbd1e76:Mm,__wbg_scissor_4b89b60091ee8f0e:Lm,__wbg_shaderSource_a0001b8eab5d44f4:Nm,__wbg_stencilFuncSeparate_1f0226d5d3acaf47:Bm,__wbg_stencilMask_00541859199befd2:Qm,__wbg_stencilMaskSeparate_5e7b9b536eac0c5d:jm,__wbg_stencilOpSeparate_153523493abc8ec8:Fm,__wbg_texParameteri_1b210b807f1ea723:zm,__wbg_uniform1f_f60e1072e28b8c49:Um,__wbg_uniform1i_50124a48de1da66b:Hm,__wbg_uniform4f_5b62a0acebac4494:Vm,__wbg_useProgram_156511a425feb519:Wm,__wbg_vertexAttribPointer_63d2aef49627302b:$m,__wbg_viewport_a93f3881c4202d5e:Km,__wbg_log_4b5638ad60bdc54a:Ym,__wbg_drawArraysInstancedANGLE_89a45d6f51cd0483:Jm,__wbg_drawElementsInstancedANGLE_6ac21f9a1ebe5f6b:Gm,__wbg_vertexAttribDivisorANGLE_d5931335aaf0c735:Xm,__wbg_now_8172cd917e5eda6b:qm,__wbg_instanceof_Gamepad_530c9ede38ea1fa0:Zm,__wbg_buttons_1162e62c0dc4246e:e1,__wbg_instanceof_GamepadButton_7bf6efc7de5e0120:t1,__wbg_pressed_7add67434a3dd765:n1,__wbg_code_06787cd3c7a60600:r1,__wbg_drawBuffersWEBGL_482a093ae5a4ad55:o1,__wbg_getGamepads_8001a499f2b689fe:i1,__wbg_instanceof_HtmlCanvasElement_97761617af6ea089:u1,__wbg_setwidth_afb418d3fbf71ba7:l1,__wbg_setheight_3eb8729b59493242:a1,__wbg_getContext_a6ea7a8e317f182a:s1,__wbg_value_5ad7478d7216c125:c1,__wbg_preventDefault_3209279b490de583:f1,__wbg_size_878ba1bf0c2ec606:d1,__wbg_type_ca7819eaadc2049f:_1,__wbg_name_2473476082bed625:p1,__wbg_bindVertexArrayOES_84540c072ea96b75:g1,__wbg_createVertexArrayOES_00a5c523e5b17eff:m1,__wbg_deleteVertexArrayOES_98b83132b3d85825:w1,__wbg_addEventListener_cbe4c6f619b032f3:h1,__wbg_getNamedItem_bcfc3b5818f403a4:y1,__wbg_get_57245cc7d7c7619d:v1,__wbg_length_6e3bbe7c8bd4dbd8:A1,__wbg_new_1d9a920c6bfc44a8:b1,__wbg_newnoargs_b5b063fc6c2f0376:S1,__wbg_get_765201544a2b6869:E1,__wbg_call_97ae9d8645dc388b:k1,__wbg_new_0b9bfdd97583284e:C1,__wbg_self_6d479506f72c6a71:x1,__wbg_window_f2557cc78490aceb:P1,__wbg_globalThis_7f206bda628d5286:I1,__wbg_global_ba75c50d1cf384f4:T1,__wbindgen_is_undefined:D1,__wbg_of_d79bf3cec607f7a4:R1,__wbg_push_740e4b286702d964:O1,__wbg_instanceof_ArrayBuffer_e5e48f4762c5610b:M1,__wbg_entries_65a76a413fc91037:L1,__wbg_is_40a66842732708e7:N1,__wbg_resolve_99fe17964f31ffc0:B1,__wbg_then_11f7a54d67b4bfad:Q1,__wbg_buffer_3f3d764d4747d564:j1,__wbg_newwithbyteoffsetandlength_890b478c8d7226ff:F1,__wbg_newwithbyteoffsetandlength_698c5100ae9c3365:z1,__wbg_newwithbyteoffsetandlength_7be13f49af2b2012:U1,__wbg_newwithbyteoffsetandlength_d9aa266703cb98be:H1,__wbg_new_8c3f0052272a457a:V1,__wbg_set_83db9690f9353e79:W1,__wbg_length_9e1ae1900cb0fbd5:$1,__wbg_newwithbyteoffsetandlength_5540e144e9b8b907:K1,__wbg_newwithbyteoffsetandlength_9cc9adccd861aa26:Y1,__wbg_newwithbyteoffsetandlength_be22e5fcf4f69ab4:J1,__wbg_instanceof_Uint8Array_971eeda69eb75003:G1,__wbg_getindex_ed9af38a6f2f9635:X1,__wbg_set_bf3f89b92d5a34bf:q1,__wbg_floor_182f4f67bb2a06bd:Z1,__wbg_random_656f2ae924b2540e:ew,__wbg_new_abda76e883ba8a5f:tw,__wbg_stack_658279fe44541cf6:nw,__wbg_error_f851667af71bcfc6:rw,__wbindgen_debug_string:ow,__wbindgen_throw:iw,__wbindgen_memory:uw,__wbindgen_closure_wrapper526:lw,__wbindgen_closure_wrapper527:aw,__wbindgen_closure_wrapper679:sw}},S_),Jn=M.memory,cw=M.__wbg_noentiendobuilder_free,fw=M.noentiendobuilder_new,dw=M.noentiendobuilder_with_canvas,_w=M.noentiendobuilder_with_roms,pw=M.noentiendobuilder_with_system,gw=M.noentiendobuilder_build,mw=M.__wbg_noentiendo_free,ww=M.noentiendo_close,hw=M.noentiendo_reset,yw=M.noentiendo_dispatch_key;M.wgpu_render_pass_set_bind_group;M.wgpu_render_pass_set_pipeline;M.wgpu_render_pass_set_blend_constant;M.wgpu_render_pass_set_vertex_buffer;M.wgpu_render_pass_set_scissor_rect;M.wgpu_render_pass_set_viewport;M.wgpu_render_pass_set_stencil_reference;M.wgpu_render_pass_draw;M.wgpu_render_pass_insert_debug_marker;M.wgpu_render_pass_push_debug_group;M.wgpu_render_pass_pop_debug_group;M.wgpu_render_pass_draw_indexed;M.wgpu_render_pass_draw_indirect;M.wgpu_render_pass_draw_indexed_indirect;M.wgpu_render_pass_multi_draw_indirect;M.wgpu_render_pass_multi_draw_indexed_indirect;M.wgpu_render_pass_multi_draw_indirect_count;M.wgpu_render_pass_multi_draw_indexed_indirect_count;M.wgpu_render_pass_set_push_constants;M.wgpu_render_pass_write_timestamp;M.wgpu_render_pass_begin_pipeline_statistics_query;M.wgpu_render_pass_end_pipeline_statistics_query;M.wgpu_compute_pass_set_bind_group;M.wgpu_compute_pass_set_pipeline;M.wgpu_compute_pass_insert_debug_marker;M.wgpu_compute_pass_push_debug_group;M.wgpu_compute_pass_pop_debug_group;M.wgpu_compute_pass_dispatch_workgroups;M.wgpu_compute_pass_dispatch_workgroups_indirect;M.wgpu_compute_pass_set_push_constant;M.wgpu_compute_pass_write_timestamp;M.wgpu_compute_pass_begin_pipeline_statistics_query;M.wgpu_compute_pass_end_pipeline_statistics_query;M.wgpu_render_bundle_set_bind_group;M.wgpu_render_bundle_set_pipeline;M.wgpu_render_bundle_set_vertex_buffer;M.wgpu_render_bundle_draw;M.wgpu_render_bundle_draw_indexed;M.wgpu_render_bundle_draw_indirect;M.wgpu_render_bundle_draw_indexed_indirect;M.wgpu_render_bundle_set_push_constants;M.wgpu_render_pass_set_index_buffer;M.wgpu_render_pass_execute_bundles;M.wgpu_render_bundle_set_index_buffer;M.wgpu_render_bundle_pop_debug_group;M.wgpu_render_bundle_insert_debug_marker;M.wgpu_render_bundle_push_debug_group;const it=M.__wbindgen_malloc,ut=M.__wbindgen_realloc,vw=M.__wbindgen_export_2,Aw=M._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h4cc4006960095456,bw=M._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hf08e5f903a2eaa39,Sw=M._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__ha4b18895d9543d1d,Ew=M.__wbindgen_exn_store,kw=M.__wbindgen_free,Cw="/assets/basic.5b426b5c.bin",xw="data:application/octet-stream;base64,HCJKVkwgHgAYJEJ+QkJCAHwiIjwiInwAHCJAQEAiHAB4JCIiIiR4AH5AQHhAQH4AfkBAeEBAQAAcIkBOQiIcAEJCQn5CQkIAHAgICAgIHAAOBAQEBEQ4AEJESHBIREIAQEBAQEBAfgBCZlpaQkJCAEJiUkpGQkIAGCRCQkIkGAB8QkJ8QEBAABgkQkJKJBoAfEJCfEhEQgA8QkA8AkI8AD4ICAgICAgAQkJCQkJCPABCQkIkJBgYAEJCQlpaZkIAQkIkGCRCQgAiIiIcCAgIAH4CBBggQH4APCAgICAgPAAAQCAQCAQCADwEBAQEBDwAAAgcKggICAgAABAgfyAQAAAAAAAAAAAACAgICAAACAAkJCQAAAAAACQkfiR+JCQACB4oHAo8CAAAYmQIECZGADBISDBKRDoABAgQAAAAAAAECBAQEAgEACAQCAgIECAACCocPhwqCAAACAg+CAgAAAAAAAAACAgQAAAAfgAAAAAAAAAAABgYAAACBAgQIEAAPEJGWmJCPAAIGCgICAg+ADxCAgwwQH4APEICHAJCPAAEDBQkfgQEAH5AeAQCRDgAHCBAfEJCPAB+QgQIEBAQADxCQjxCQjwAPEJCPgIEOAAAAAgAAAgAAAAACAAACAgQDhgwYDAYDgAAAH4AfgAAAHAYDAYMGHAAPEICDBAAEAAAAAAA/wAAAAgcPn9/HD4AEBAQEBAQEBAAAAD/AAAAAAAA/wAAAAAAAP8AAAAAAAAAAAAAAP8AACAgICAgICAgBAQEBAQEBAQAAAAA4BAICAgICAQDAAAACAgIEOAAAACAgICAgICA/4BAIBAIBAIBAQIECBAgQID/gICAgICAgP8BAQEBAQEBADx+fn5+PAAAAAAAAAD/ADZ/f38+HAgAQEBAQEBAQEAAAAAAAwQICIFCJBgYJEKBADxCQkJCPAAIHCp3KggIAAICAgICAgICCBw+fz4cCAAICAgI/wgICKBQoFCgUKBQCAgICAgICAgAAAE+VBQUAP9/Px8PBwMBAAAAAAAAAADw8PDw8PDw8AAAAAD//////wAAAAAAAAAAAAAAAAAA/4CAgICAgICAqlWqVapVqlUBAQEBAQEBAQAAAACqVapV//78+PDgwIADAwMDAwMDAwgICAgPCAgIAAAAAA8PDw8ICAgIDwAAAAAAAAD4CAgIAAAAAAAA//8AAAAADwgICAgICAj/AAAAAAAAAP8ICAgICAgI+AgICMDAwMDAwMDA4ODg4ODg4OAHBwcHBwcHB///AAAAAAAA////AAAAAAAAAAAAAP///wEBAQEBAQH/AAAAAPDw8PAPDw8PAAAAAAgICAj4AAAA8PDw8AAAAADw8PDwDw8PDxwiSlZMIB4AAAA4BDxEOgBAQFxiQmJcAAAAPEJAQjwAAgI6RkJGOgAAADxCfkA8AAwSEHwQEBAAAAA6RkY6AjxAQFxiQkJCAAgAGAgICBwABAAMBAQERDhAQERIUGhEABgICAgICBwAAAB2SUlJSQAAAFxiQkJCAAAAPEJCQjwAAABcYmJcQEAAADpGRjoCAgAAXGJAQEAAAAA+QDwCfAAQEHwQEBIMAAAAQkJCRjoAAABCQkIkGAAAAEFJSUk2AAAAQiQYJEIAAABCQkY6AjwAAH4EGCB+ADwgICAgIDwAAEAgEAgEAgA8BAQEBAQ8AAAIHCoICAgIAAAQIH8gEAAAAAAAAAAAAAgICAgAAAgAJCQkAAAAAAAkJH4kfiQkAAgeKBwKPAgAAGJkCBAmRgAwSEgwSkQ6AAQIEAAAAAAABAgQEBAIBAAgEAgICBAgAAgqHD4cKggAAAgIPggIAAAAAAAAAAgIEAAAAH4AAAAAAAAAAAAYGAAAAgQIECBAADxCRlpiQjwACBgoCAgIPgA8QgIMMEB+ADxCAhwCQjwABAwUJH4EBAB+QHgEAkQ4ABwgQHxCQjwAfkIECBAQEAA8QkI8QkI8ADxCQj4CBDgAAAAIAAAIAAAAAAgAAAgIEA4YMGAwGA4AAAB+AH4AAABwGAwGDBhwADxCAgwQABAAAAAAAP8AAAAYJEJ+QkJCAHwiIjwiInwAHCJAQEAiHAB4JCIiIiR4AH5AQHhAQH4AfkBAeEBAQAAcIkBOQiIcAEJCQn5CQkIAHAgICAgIHAAOBAQEBEQ4AEJESHBIREIAQEBAQEBAfgBCZlpaQkJCAEJiUkpGQkIAGCRCQkIkGAB8QkJ8QEBAABgkQkJKJBoAfEJCfEhEQgA8QkA8AkI8AD4ICAgICAgAQkJCQkJCPABCQkIkJBgYAEJCQlpaZkIAQkIkGCRCQgAiIiIcCAgIAH4CBBggQH4ACAgICP8ICAigUKBQoFCgUAgICAgICAgIzMwzM8zMMzPMZjOZzGYzmQAAAAAAAAAA8PDw8PDw8PAAAAAA//////8AAAAAAAAAAAAAAAAAAP+AgICAgICAgKpVqlWqVapVAQEBAQEBAQEAAAAAqlWqVZkzZsyZM2bMAwMDAwMDAwMICAgIDwgICAAAAAAPDw8PCAgICA8AAAAAAAAA+AgICAAAAAAAAP//AAAAAA8ICAgICAgI/wAAAAAAAAD/CAgICAgICPgICAjAwMDAwMDAwODg4ODg4ODgBwcHBwcHBwf//wAAAAAAAP///wAAAAAAAAAAAAD///8BAkRIUGBAAAAAAADw8PDwDw8PDwAAAAAICAgI+AAAAPDw8PAAAAAA8PDw8A8PDw8=",Pw="data:application/octet-stream;base64,Y0gQDSAs16VjMAmlDEn/hQwgod6pXqDgIHPXaBADIKHeqWOg4Ewt3yDW2qkAhQwg39+iS6AAINXfqVSgACCu2qkAhWOlDCBQ4KlLoABMG9pITBHggUkP2qKDSQ/aon8AAAAABYTmGi0bhigH+/iHmWiJAYcjNd/hhqVd5yiDSQ/aoqFURo8Tj1JDic2lY0gQAyCh3qVeSMmBkAepyKDYIBvaqbyg4CAt32jJgZAHqVSg4CAz12gQA0yh3mALdrODvdN5HvSm9XuD/LAQfAwfZ8p83lPLwX0UZHBMfbfqUXp9YzCIfn6SRJk6fkzMkcd/qqqqE4EAAAAA5nfQAuZ4rWDqyTqwCskg8O846TA46dBggE/HUlii+5qpTIVRhQCpI6DRhQGEAqkohQ+pHoUQohy9+OCVb8rQ+KkDhVCKhWWFDoUVSIUN6I79AY78AaIWhhOgBIUohCmFEYQSqOYR0ATmEjAPqVWREdER0AcKkRHREfDppRGkEoU0hDWFMIQxogCgBIYohCmgAJiRKOYopSikKSAow6nEoOEgHMqlNDjlKKqlNeUpINncqbeg4SAcyiBdxUyJwyBCWVRFUyBGUkVFDQAjIyMgQ09NTU9ET1JFIEJBU0lDICMjIw0NAKl/jU7oom2pAJWNyhD7qS6FkKnmhZGpA4WwqQ+NEOgKjUDojULojiLojkXoqT2NE+gsEuipPI0h6I0j6I0R6I4i6KkMjUzohaiFp6CDohiU4OAU8AjgDfAE4AfQAYjKEO6ExeiGn4bEqSCdAICdAIGdAIKdAIPK0PGgAITGhNim2LXgCYCFxb1I54XEqSeF1eAY8Ai14TAEqU+F1aXGySiQBOkohcZgrG8CogC9cAKdbwLo5J7Q9caemFhgINjjpZ6Fp/D6eKWq8AmlqaAAhKog6uYgheLJg9AQeKIJhp69YOedbgLK0Pfw1ckN0M6k1YSsscTJINADiND3yIShoACExoTNpaMwFsXY0BKlpIXGxaGQCrArmEiKSKWs8KGkxrHEhdkpPwbZJNkQAgmAkASmzdAEcAIJQObGID/jxKHQEakAhaypDaaw4APwAyDY46kNhdloqmiopdnJ3tACqf9gySLQCKXNSQGFzakiYAlApp/wAgmAptzwAsbcIOrm5sak1cTGsBmm2MBP0Awgi+MgGeWpAIXG8AfgGNAbIJzjaKil3PACRs1oqmhYYOAXsAa14gmAleJgIKPjTH7jID/lxtim2BbhVuEgi+OlxkggXeJohcZgoCem2NAGhsZoaNC+td8wBcq136BPyobYhcW9SOeFxITGhNVgSIXZikiYSKkAhaykxqXZEANMeuTJDdADTC/lySCQCCk/ID/jTE7jptzwA0xS48kU0ByIhMYQBiC040wg5MixxIiRxMjE1dD1qSCRxNA8ps3wA0xS48kS0AKFn8kT0AMgV+LJHdASyITGiMTVkAcgGeWgAITGTH7jyRHQDhiYaSioxdWQ7vDsIBnlTH7j6IXYmOkohcbm2K1I54XEpeCFxdDoKX/Jf9ACqV7JIJADTEzjyQ3QA0wv5abN0DDJFNAopNWxxMkg0ATExtAHwE/wuiC65aTViLHEyJHEiMTG0PWpIJHE5tzQVqbc8AUJQExS48kR0CulxskokAbpKIXGsD2m2PA5td8QB8bYIF3ikC7KyobYIF3ipcYYaSiFxtAeyRLQBKkAhZ/JHdALiITGEA0gtONMfuPJE9ADICniTH7jOEajptjo4BnQAyA/5bXgEPSG2Exd4qkAhdyFn4XNhcYgGeVMfuN4oACExKmAhciFxakoJOEwAqlQhcepNI0R6LHHkcTI0PnmyObFqYTFyNDvqeiFxMbFqSDGxMbHkcTQ+KIZhtiiAMbYteApf7ThEAIJgJXg6OAZ0O+pg4X4peAQ46k8jRHoWKn+zRLo0A+gCI1F6CxN6FD7iND1hJ6m2GCm2Oh4qTSNEejgGPAzkANMnOOiF7XhCYCFyLTgMAIpf5XhmAmAhcWgJ71J54XHvUjnhcSxxJHHiBD5yuTY0NXoteAJgIXFKX+V4L1I54XEoCepIJHEiBD7qTyNEehYTF3iSIpImEi6vQQBKRDwA2ySAGyQACDq/6Wn0BjGqNAUqRSFqKTGRqqxxLAE5qqFqUmAkcSi/4am6IaYolCtEOgp8I0Q6KAArRDoCgoKEAaE+ak90Aal+dAFqTWNE+iQCYT6rUDoCRDQCaX60AitQOgp741A6KAIrRLozRLo0PZKsBxIvffm0AapAYWY0A/J//ALyTzQBSwR6DAChqZoyvAIiNDb7hDo0MylpsWX8ByFl6owF7335kaYkAIJgKaenW8C6OAK0AKiAIaeaKhoqmhAqK1A6Ckg0PmYpMaRxGA9Lv8DPCBbEi0wAD7/XUAAKzL/PyxOVlgzMQ07TUJDWio1/zpLSEZTNjT/TEpHREEvOP9QSVlSVzk3Xk9VVEVRFBH/KVwnJCIdE18oJiUjIQAoUHigyPAYQGiQuOAIMFiAqND4IEhwmMBMT0FEDVJVTg2iAbX6SLX7IHXnaEhKSkpKII3nqmgpDyCN50iKINL/aEzS/xhp9pACaQZpOmCiArX6SLX8lfpolfzK0PNgILbnkAKF/CC255AChftgqQCNAAEg6+fJINAJIOvnySDQDxhgIODnCgoKCo0AASDr5yDg5w0AAThgyToIKQ8okAJpCGAgz//JDdD4aGhMVP2pPyDS/0xW/f8=",Iw="/assets/kernal.056d5e84.bin",Tw="/assets/char.bda28072.bin",Dw="/assets/basic.8be2d882.bin",Rw="/assets/kernal.8fc94bd8.bin",Ow="/assets/basic.89878cea.bin",Mw="/assets/char.fd0d53b8.bin",Lw="/assets/kernal.83c60d47.bin",mt=async e=>{const t=await fetch(e);if(!t.ok)throw new Error(`Failed to fetch ${e}`);const n=await t.arrayBuffer();return new Uint8Array(n)},Nw={pet:{basic:await mt(Cw),char:await mt(xw),editor:await mt(Pw),kernal:await mt(Iw)},vic:{basic:await mt(Dw),char:await mt(Tw),kernal:await mt(Rw)},c64:{basic:await mt(Ow),char:await mt(Mw),kernal:await mt(Lw)}};var ii={exports:{}},ui={};/** * @license React * react-jsx-runtime.production.min.js * diff --git a/assets/libnoentiendo_bg.6c35c521.wasm b/assets/libnoentiendo_bg.6c35c521.wasm deleted file mode 100644 index ed56e351..00000000 Binary files a/assets/libnoentiendo_bg.6c35c521.wasm and /dev/null differ diff --git a/assets/libnoentiendo_bg.e098007d.wasm b/assets/libnoentiendo_bg.e098007d.wasm new file mode 100644 index 00000000..788e98fd Binary files /dev/null and b/assets/libnoentiendo_bg.e098007d.wasm differ diff --git a/doc/help.html b/doc/help.html index f66ef477..6e69b78a 100644 --- a/doc/help.html +++ b/doc/help.html @@ -1 +1 @@ -Rustdoc help

Rustdoc help

Back
\ No newline at end of file +Rustdoc help

Rustdoc help

Back
\ No newline at end of file diff --git a/doc/implementors/clap/derive/trait.ValueEnum.js b/doc/implementors/clap/derive/trait.ValueEnum.js index fc375706..612d20a5 100644 --- a/doc/implementors/clap/derive/trait.ValueEnum.js +++ b/doc/implementors/clap/derive/trait.ValueEnum.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"noentiendo_desktop":[["impl ValueEnum for PlatformArg"],["impl ValueEnum for SystemArg"],["impl ValueEnum for KeyMappingArg"]] +"noentiendo_desktop":[["impl ValueEnum for KeyMappingArg"],["impl ValueEnum for SystemArg"],["impl ValueEnum for PlatformArg"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/clone/trait.Clone.js b/doc/implementors/core/clone/trait.Clone.js index b97db724..4640f43a 100644 --- a/doc/implementors/core/clone/trait.Clone.js +++ b/doc/implementors/core/clone/trait.Clone.js @@ -1,4 +1,4 @@ (function() {var implementors = { -"libnoentiendo":[["impl Clone for Color"],["impl Clone for RomFile"],["impl<T: Clone + PartialEq> Clone for KeyState<T>"],["impl Clone for KeyPosition"],["impl Clone for C64Keys"],["impl Clone for VirtualKey"],["impl Clone for PetKeys"],["impl Clone for KeySymbol"],["impl Clone for JoystickState"],["impl Clone for WindowConfig"]], -"noentiendo_desktop":[["impl Clone for KeyMappingArg"],["impl Clone for SystemArg"],["impl Clone for PlatformArg"]] +"libnoentiendo":[["impl Clone for KeySymbol"],["impl Clone for WindowConfig"],["impl Clone for RomFile"],["impl<T: Clone + PartialEq> Clone for KeyState<T>"],["impl Clone for JoystickState"],["impl Clone for Color"],["impl Clone for VirtualKey"],["impl Clone for KeyPosition"],["impl Clone for PetKeys"],["impl Clone for C64Keys"]], +"noentiendo_desktop":[["impl Clone for SystemArg"],["impl Clone for KeyMappingArg"],["impl Clone for PlatformArg"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/cmp/trait.Eq.js b/doc/implementors/core/cmp/trait.Eq.js index 89a589da..34399ebe 100644 --- a/doc/implementors/core/cmp/trait.Eq.js +++ b/doc/implementors/core/cmp/trait.Eq.js @@ -1,4 +1,4 @@ (function() {var implementors = { -"libnoentiendo":[["impl Eq for PetKeys"],["impl Eq for KeySymbol"],["impl Eq for VirtualKey"],["impl Eq for Color"],["impl Eq for ActiveInterrupt"],["impl Eq for C64Keys"],["impl Eq for KeyPosition"]], -"noentiendo_desktop":[["impl Eq for PlatformArg"],["impl Eq for SystemArg"],["impl Eq for KeyMappingArg"]] +"libnoentiendo":[["impl Eq for PetKeys"],["impl Eq for C64Keys"],["impl Eq for ActiveInterrupt"],["impl Eq for KeyPosition"],["impl Eq for VirtualKey"],["impl Eq for Color"],["impl Eq for KeySymbol"]], +"noentiendo_desktop":[["impl Eq for PlatformArg"],["impl Eq for KeyMappingArg"],["impl Eq for SystemArg"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/cmp/trait.Ord.js b/doc/implementors/core/cmp/trait.Ord.js index 4838e8c0..a5e5250f 100644 --- a/doc/implementors/core/cmp/trait.Ord.js +++ b/doc/implementors/core/cmp/trait.Ord.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"noentiendo_desktop":[["impl Ord for SystemArg"],["impl Ord for KeyMappingArg"],["impl Ord for PlatformArg"]] +"noentiendo_desktop":[["impl Ord for KeyMappingArg"],["impl Ord for PlatformArg"],["impl Ord for SystemArg"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/cmp/trait.PartialEq.js b/doc/implementors/core/cmp/trait.PartialEq.js index 0fa45172..6e917a5b 100644 --- a/doc/implementors/core/cmp/trait.PartialEq.js +++ b/doc/implementors/core/cmp/trait.PartialEq.js @@ -1,4 +1,4 @@ (function() {var implementors = { -"libnoentiendo":[["impl<T: PartialEq + PartialEq> PartialEq<KeyState<T>> for KeyState<T>"],["impl PartialEq<PetKeys> for PetKeys"],["impl PartialEq<JoystickState> for JoystickState"],["impl PartialEq<ActiveInterrupt> for ActiveInterrupt"],["impl PartialEq<VirtualKey> for VirtualKey"],["impl PartialEq<Color> for Color"],["impl PartialEq<C64Keys> for C64Keys"],["impl PartialEq<WindowConfig> for WindowConfig"],["impl PartialEq<KeySymbol> for KeySymbol"],["impl PartialEq<KeyPosition> for KeyPosition"]], -"noentiendo_desktop":[["impl PartialEq<KeyMappingArg> for KeyMappingArg"],["impl PartialEq<PlatformArg> for PlatformArg"],["impl PartialEq<SystemArg> for SystemArg"]] +"libnoentiendo":[["impl PartialEq<ActiveInterrupt> for ActiveInterrupt"],["impl PartialEq<KeySymbol> for KeySymbol"],["impl<T: PartialEq + PartialEq> PartialEq<KeyState<T>> for KeyState<T>"],["impl PartialEq<Color> for Color"],["impl PartialEq<WindowConfig> for WindowConfig"],["impl PartialEq<KeyPosition> for KeyPosition"],["impl PartialEq<JoystickState> for JoystickState"],["impl PartialEq<C64Keys> for C64Keys"],["impl PartialEq<VirtualKey> for VirtualKey"],["impl PartialEq<PetKeys> for PetKeys"]], +"noentiendo_desktop":[["impl PartialEq<KeyMappingArg> for KeyMappingArg"],["impl PartialEq<SystemArg> for SystemArg"],["impl PartialEq<PlatformArg> for PlatformArg"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/cmp/trait.PartialOrd.js b/doc/implementors/core/cmp/trait.PartialOrd.js index a0324fa4..3e32f79c 100644 --- a/doc/implementors/core/cmp/trait.PartialOrd.js +++ b/doc/implementors/core/cmp/trait.PartialOrd.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"noentiendo_desktop":[["impl PartialOrd<SystemArg> for SystemArg"],["impl PartialOrd<PlatformArg> for PlatformArg"],["impl PartialOrd<KeyMappingArg> for KeyMappingArg"]] +"noentiendo_desktop":[["impl PartialOrd<PlatformArg> for PlatformArg"],["impl PartialOrd<SystemArg> for SystemArg"],["impl PartialOrd<KeyMappingArg> for KeyMappingArg"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/default/trait.Default.js b/doc/implementors/core/default/trait.Default.js index 63c9ba5b..9ee2a3a8 100644 --- a/doc/implementors/core/default/trait.Default.js +++ b/doc/implementors/core/default/trait.Default.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"libnoentiendo":[["impl Default for NullPort"],["impl Default for SystemInfo"],["impl Default for NullMemory"],["impl<T: Default + PartialEq> Default for KeyState<T>"],["impl Default for BranchMemory"]] +"libnoentiendo":[["impl Default for SystemInfo"],["impl Default for NullMemory"],["impl Default for NullPort"],["impl<T: Default + PartialEq> Default for KeyState<T>"],["impl Default for BranchMemory"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/fmt/trait.Debug.js b/doc/implementors/core/fmt/trait.Debug.js index 7cdc2f17..32d9a04f 100644 --- a/doc/implementors/core/fmt/trait.Debug.js +++ b/doc/implementors/core/fmt/trait.Debug.js @@ -1,4 +1,4 @@ (function() {var implementors = { -"libnoentiendo":[["impl Debug for RomFile"],["impl<T: Debug + PartialEq> Debug for KeyState<T>"],["impl Debug for VirtualKey"],["impl Debug for WindowConfig"],["impl Debug for KeySymbol"],["impl Debug for JoystickState"],["impl Debug for SystemInfo"],["impl Debug for C64Keys"],["impl Debug for Color"],["impl Debug for ActiveInterrupt"],["impl Debug for PetKeys"],["impl Debug for KeyPosition"]], -"noentiendo_desktop":[["impl Debug for PlatformArg"],["impl Debug for KeyMappingArg"],["impl Debug for Args"],["impl Debug for SystemArg"]] +"libnoentiendo":[["impl Debug for PetKeys"],["impl Debug for RomFile"],["impl Debug for KeySymbol"],["impl Debug for WindowConfig"],["impl Debug for JoystickState"],["impl<T: Debug + PartialEq> Debug for KeyState<T>"],["impl Debug for C64Keys"],["impl Debug for Color"],["impl Debug for VirtualKey"],["impl Debug for SystemInfo"],["impl Debug for KeyPosition"],["impl Debug for ActiveInterrupt"]], +"noentiendo_desktop":[["impl Debug for SystemArg"],["impl Debug for PlatformArg"],["impl Debug for KeyMappingArg"],["impl Debug for Args"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/hash/trait.Hash.js b/doc/implementors/core/hash/trait.Hash.js index 6f73de62..90e394c3 100644 --- a/doc/implementors/core/hash/trait.Hash.js +++ b/doc/implementors/core/hash/trait.Hash.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"libnoentiendo":[["impl Hash for Color"],["impl Hash for PetKeys"],["impl Hash for C64Keys"],["impl Hash for KeyPosition"],["impl Hash for KeySymbol"],["impl Hash for VirtualKey"]] +"libnoentiendo":[["impl Hash for KeySymbol"],["impl Hash for PetKeys"],["impl Hash for KeyPosition"],["impl Hash for C64Keys"],["impl Hash for VirtualKey"],["impl Hash for Color"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/marker/trait.Copy.js b/doc/implementors/core/marker/trait.Copy.js index a837f072..436c9cf2 100644 --- a/doc/implementors/core/marker/trait.Copy.js +++ b/doc/implementors/core/marker/trait.Copy.js @@ -1,4 +1,4 @@ (function() {var implementors = { -"libnoentiendo":[["impl Copy for PetKeys"],["impl Copy for KeyPosition"],["impl Copy for C64Keys"],["impl Copy for JoystickState"],["impl Copy for Color"],["impl Copy for WindowConfig"],["impl Copy for KeySymbol"],["impl Copy for VirtualKey"]], -"noentiendo_desktop":[["impl Copy for SystemArg"],["impl Copy for PlatformArg"],["impl Copy for KeyMappingArg"]] +"libnoentiendo":[["impl Copy for C64Keys"],["impl Copy for VirtualKey"],["impl Copy for KeySymbol"],["impl Copy for WindowConfig"],["impl Copy for Color"],["impl Copy for PetKeys"],["impl Copy for JoystickState"],["impl Copy for KeyPosition"]], +"noentiendo_desktop":[["impl Copy for PlatformArg"],["impl Copy for SystemArg"],["impl Copy for KeyMappingArg"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/marker/trait.Freeze.js b/doc/implementors/core/marker/trait.Freeze.js index eefe9289..bf8ff2a6 100644 --- a/doc/implementors/core/marker/trait.Freeze.js +++ b/doc/implementors/core/marker/trait.Freeze.js @@ -1,4 +1,4 @@ (function() {var implementors = { "libnoentiendo":[["impl Freeze for Mos6502",1,["libnoentiendo::cpu::Mos6502"]],["impl Freeze for BankedMemory",1,["libnoentiendo::memory::banked::BankedMemory"]],["impl Freeze for BlockMemory",1,["libnoentiendo::memory::block::BlockMemory"]],["impl Freeze for BranchMemory",1,["libnoentiendo::memory::branch::BranchMemory"]],["impl Freeze for Mos6510Port",1,["libnoentiendo::memory::mos6510::Mos6510Port"]],["impl Freeze for Cia",1,["libnoentiendo::memory::mos652x::cia::Cia"]],["impl Freeze for Pia",1,["libnoentiendo::memory::mos652x::pia::Pia"]],["impl Freeze for Via",1,["libnoentiendo::memory::mos652x::via::Via"]],["impl Freeze for PortRegisters",1,["libnoentiendo::memory::mos652x::PortRegisters"]],["impl Freeze for TimerOutput",1,["libnoentiendo::memory::mos652x::TimerOutput"]],["impl Freeze for TimerClockSource",1,["libnoentiendo::memory::mos652x::TimerClockSource"]],["impl Freeze for Timer",1,["libnoentiendo::memory::mos652x::Timer"]],["impl Freeze for ShiftRegister",1,["libnoentiendo::memory::mos652x::ShiftRegister"]],["impl Freeze for InterruptRegister",1,["libnoentiendo::memory::mos652x::InterruptRegister"]],["impl Freeze for NullMemory",1,["libnoentiendo::memory::null::NullMemory"]],["impl Freeze for NullPort",1,["libnoentiendo::memory::ports::NullPort"]],["impl Freeze for ActiveInterrupt",1,["libnoentiendo::memory::ActiveInterrupt"]],["impl Freeze for SystemInfo",1,["libnoentiendo::memory::SystemInfo"]],["impl Freeze for C64Keys",1,["libnoentiendo::keyboard::commodore::C64Keys"]],["impl Freeze for C64KeyboardAdapter",1,["libnoentiendo::keyboard::commodore::C64KeyboardAdapter"]],["impl Freeze for C64SymbolAdapter",1,["libnoentiendo::keyboard::commodore::C64SymbolAdapter"]],["impl Freeze for C64VirtualAdapter",1,["libnoentiendo::keyboard::commodore::C64VirtualAdapter"]],["impl Freeze for KeyPosition",1,["libnoentiendo::keyboard::positions::KeyPosition"]],["impl Freeze for KeySymbol",1,["libnoentiendo::keyboard::symbols::KeySymbol"]],["impl Freeze for SymbolAdapter",1,["libnoentiendo::keyboard::symbols::SymbolAdapter"]],["impl Freeze for VirtualKey",1,["libnoentiendo::keyboard::virtualkey::VirtualKey"]],["impl<T> Freeze for KeyState<T>",1,["libnoentiendo::keyboard::KeyState"]],["impl Freeze for KeyMappingStrategy",1,["libnoentiendo::keyboard::KeyMappingStrategy"]],["impl Freeze for TextPlatform",1,["libnoentiendo::platform::text::TextPlatform"]],["impl Freeze for TextPlatformProvider",1,["libnoentiendo::platform::text::TextPlatformProvider"]],["impl Freeze for WinitPlatform",1,["libnoentiendo::platform::winit::WinitPlatform"]],["impl Freeze for WinitPlatformProvider",1,["libnoentiendo::platform::winit::WinitPlatformProvider"]],["impl Freeze for Color",1,["libnoentiendo::platform::Color"]],["impl Freeze for JoystickState",1,["libnoentiendo::platform::JoystickState"]],["impl Freeze for WindowConfig",1,["libnoentiendo::platform::WindowConfig"]],["impl Freeze for RomFile",1,["libnoentiendo::roms::RomFile"]],["impl Freeze for BasicSystemBuilder",1,["libnoentiendo::systems::basic::BasicSystemBuilder"]],["impl Freeze for BasicSystem",1,["libnoentiendo::systems::basic::BasicSystem"]],["impl Freeze for C64SystemRoms",1,["libnoentiendo::systems::c64::roms::C64SystemRoms"]],["impl Freeze for C64BankSwitching",1,["libnoentiendo::systems::c64::C64BankSwitching"]],["impl Freeze for C64SystemConfig",1,["libnoentiendo::systems::c64::C64SystemConfig"]],["impl Freeze for C64SystemBuilder",1,["libnoentiendo::systems::c64::C64SystemBuilder"]],["impl Freeze for C64System",1,["libnoentiendo::systems::c64::C64System"]],["impl Freeze for Easy6502SystemBuilder",1,["libnoentiendo::systems::easy::Easy6502SystemBuilder"]],["impl Freeze for Easy6502System",1,["libnoentiendo::systems::easy::Easy6502System"]],["impl Freeze for KlausSystemBuilder",1,["libnoentiendo::systems::klaus::KlausSystemBuilder"]],["impl Freeze for KlausSystem",1,["libnoentiendo::systems::klaus::KlausSystem"]],["impl Freeze for PetSystemRoms",1,["libnoentiendo::systems::pet::roms::PetSystemRoms"]],["impl Freeze for PetKeys",1,["libnoentiendo::systems::pet::keyboard::PetKeys"]],["impl Freeze for PetPia1PortA",1,["libnoentiendo::systems::pet::PetPia1PortA"]],["impl Freeze for PetPia1PortB",1,["libnoentiendo::systems::pet::PetPia1PortB"]],["impl Freeze for PetSystemConfig",1,["libnoentiendo::systems::pet::PetSystemConfig"]],["impl Freeze for PetSystemBuilder",1,["libnoentiendo::systems::pet::PetSystemBuilder"]],["impl Freeze for PetSystem",1,["libnoentiendo::systems::pet::PetSystem"]],["impl Freeze for Vic20SystemRoms",1,["libnoentiendo::systems::vic::Vic20SystemRoms"]],["impl Freeze for VicVia1PortA",1,["libnoentiendo::systems::vic::VicVia1PortA"]],["impl Freeze for VicVia2PortB",1,["libnoentiendo::systems::vic::VicVia2PortB"]],["impl Freeze for VicVia2PortA",1,["libnoentiendo::systems::vic::VicVia2PortA"]],["impl Freeze for Vic20SystemConfig",1,["libnoentiendo::systems::vic::Vic20SystemConfig"]],["impl Freeze for Vic20SystemBuilder",1,["libnoentiendo::systems::vic::Vic20SystemBuilder"]],["impl Freeze for Vic20System",1,["libnoentiendo::systems::vic::Vic20System"]]], -"noentiendo_desktop":[["impl Freeze for SystemArg",1,["noentiendo_desktop::SystemArg"]],["impl Freeze for PlatformArg",1,["noentiendo_desktop::PlatformArg"]],["impl Freeze for KeyMappingArg",1,["noentiendo_desktop::KeyMappingArg"]],["impl Freeze for Args",1,["noentiendo_desktop::Args"]]] +"noentiendo_desktop":[["impl Freeze for SystemArg",1,["noentiendo_desktop::SystemArg"]],["impl Freeze for PlatformArg",1,["noentiendo_desktop::PlatformArg"]],["impl Freeze for KeyMappingArg",1,["noentiendo_desktop::KeyMappingArg"]],["impl Freeze for Args",1,["noentiendo_desktop::Args"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/marker/trait.Send.js b/doc/implementors/core/marker/trait.Send.js index e8f50a24..0d5450e6 100644 --- a/doc/implementors/core/marker/trait.Send.js +++ b/doc/implementors/core/marker/trait.Send.js @@ -1,4 +1,4 @@ (function() {var implementors = { -"libnoentiendo":[["impl !Send for Mos6502",1,["libnoentiendo::cpu::Mos6502"]],["impl !Send for BankedMemory",1,["libnoentiendo::memory::banked::BankedMemory"]],["impl Send for BlockMemory",1,["libnoentiendo::memory::block::BlockMemory"]],["impl !Send for BranchMemory",1,["libnoentiendo::memory::branch::BranchMemory"]],["impl !Send for Mos6510Port",1,["libnoentiendo::memory::mos6510::Mos6510Port"]],["impl !Send for Cia",1,["libnoentiendo::memory::mos652x::cia::Cia"]],["impl !Send for Pia",1,["libnoentiendo::memory::mos652x::pia::Pia"]],["impl !Send for Via",1,["libnoentiendo::memory::mos652x::via::Via"]],["impl !Send for PortRegisters",1,["libnoentiendo::memory::mos652x::PortRegisters"]],["impl Send for TimerOutput",1,["libnoentiendo::memory::mos652x::TimerOutput"]],["impl Send for TimerClockSource",1,["libnoentiendo::memory::mos652x::TimerClockSource"]],["impl Send for Timer",1,["libnoentiendo::memory::mos652x::Timer"]],["impl Send for ShiftRegister",1,["libnoentiendo::memory::mos652x::ShiftRegister"]],["impl Send for InterruptRegister",1,["libnoentiendo::memory::mos652x::InterruptRegister"]],["impl Send for NullMemory",1,["libnoentiendo::memory::null::NullMemory"]],["impl Send for NullPort",1,["libnoentiendo::memory::ports::NullPort"]],["impl Send for ActiveInterrupt",1,["libnoentiendo::memory::ActiveInterrupt"]],["impl Send for SystemInfo",1,["libnoentiendo::memory::SystemInfo"]],["impl Send for C64Keys",1,["libnoentiendo::keyboard::commodore::C64Keys"]],["impl Send for C64KeyboardAdapter",1,["libnoentiendo::keyboard::commodore::C64KeyboardAdapter"]],["impl Send for C64SymbolAdapter",1,["libnoentiendo::keyboard::commodore::C64SymbolAdapter"]],["impl Send for C64VirtualAdapter",1,["libnoentiendo::keyboard::commodore::C64VirtualAdapter"]],["impl Send for KeyPosition",1,["libnoentiendo::keyboard::positions::KeyPosition"]],["impl Send for KeySymbol",1,["libnoentiendo::keyboard::symbols::KeySymbol"]],["impl Send for SymbolAdapter",1,["libnoentiendo::keyboard::symbols::SymbolAdapter"]],["impl Send for VirtualKey",1,["libnoentiendo::keyboard::virtualkey::VirtualKey"]],["impl<T> Send for KeyState<T>where\n T: Send,",1,["libnoentiendo::keyboard::KeyState"]],["impl Send for KeyMappingStrategy",1,["libnoentiendo::keyboard::KeyMappingStrategy"]],["impl Send for TextPlatform",1,["libnoentiendo::platform::text::TextPlatform"]],["impl Send for TextPlatformProvider",1,["libnoentiendo::platform::text::TextPlatformProvider"]],["impl Send for WinitPlatform",1,["libnoentiendo::platform::winit::WinitPlatform"]],["impl Send for WinitPlatformProvider",1,["libnoentiendo::platform::winit::WinitPlatformProvider"]],["impl Send for Color",1,["libnoentiendo::platform::Color"]],["impl Send for JoystickState",1,["libnoentiendo::platform::JoystickState"]],["impl Send for WindowConfig",1,["libnoentiendo::platform::WindowConfig"]],["impl Send for RomFile",1,["libnoentiendo::roms::RomFile"]],["impl Send for BasicSystemBuilder",1,["libnoentiendo::systems::basic::BasicSystemBuilder"]],["impl !Send for BasicSystem",1,["libnoentiendo::systems::basic::BasicSystem"]],["impl Send for C64SystemRoms",1,["libnoentiendo::systems::c64::roms::C64SystemRoms"]],["impl !Send for C64BankSwitching",1,["libnoentiendo::systems::c64::C64BankSwitching"]],["impl Send for C64SystemConfig",1,["libnoentiendo::systems::c64::C64SystemConfig"]],["impl Send for C64SystemBuilder",1,["libnoentiendo::systems::c64::C64SystemBuilder"]],["impl !Send for C64System",1,["libnoentiendo::systems::c64::C64System"]],["impl Send for Easy6502SystemBuilder",1,["libnoentiendo::systems::easy::Easy6502SystemBuilder"]],["impl !Send for Easy6502System",1,["libnoentiendo::systems::easy::Easy6502System"]],["impl Send for KlausSystemBuilder",1,["libnoentiendo::systems::klaus::KlausSystemBuilder"]],["impl !Send for KlausSystem",1,["libnoentiendo::systems::klaus::KlausSystem"]],["impl Send for PetSystemRoms",1,["libnoentiendo::systems::pet::roms::PetSystemRoms"]],["impl Send for PetKeys",1,["libnoentiendo::systems::pet::keyboard::PetKeys"]],["impl !Send for PetPia1PortA",1,["libnoentiendo::systems::pet::PetPia1PortA"]],["impl !Send for PetPia1PortB",1,["libnoentiendo::systems::pet::PetPia1PortB"]],["impl Send for PetSystemConfig",1,["libnoentiendo::systems::pet::PetSystemConfig"]],["impl Send for PetSystemBuilder",1,["libnoentiendo::systems::pet::PetSystemBuilder"]],["impl !Send for PetSystem",1,["libnoentiendo::systems::pet::PetSystem"]],["impl Send for Vic20SystemRoms",1,["libnoentiendo::systems::vic::Vic20SystemRoms"]],["impl !Send for VicVia1PortA",1,["libnoentiendo::systems::vic::VicVia1PortA"]],["impl !Send for VicVia2PortB",1,["libnoentiendo::systems::vic::VicVia2PortB"]],["impl !Send for VicVia2PortA",1,["libnoentiendo::systems::vic::VicVia2PortA"]],["impl Send for Vic20SystemConfig",1,["libnoentiendo::systems::vic::Vic20SystemConfig"]],["impl Send for Vic20SystemBuilder",1,["libnoentiendo::systems::vic::Vic20SystemBuilder"]],["impl !Send for Vic20System",1,["libnoentiendo::systems::vic::Vic20System"]]], -"noentiendo_desktop":[["impl Send for SystemArg",1,["noentiendo_desktop::SystemArg"]],["impl Send for PlatformArg",1,["noentiendo_desktop::PlatformArg"]],["impl Send for KeyMappingArg",1,["noentiendo_desktop::KeyMappingArg"]],["impl Send for Args",1,["noentiendo_desktop::Args"]]] +"libnoentiendo":[["impl !Send for Mos6502",1,["libnoentiendo::cpu::Mos6502"]],["impl !Send for BankedMemory",1,["libnoentiendo::memory::banked::BankedMemory"]],["impl Send for BlockMemory",1,["libnoentiendo::memory::block::BlockMemory"]],["impl !Send for BranchMemory",1,["libnoentiendo::memory::branch::BranchMemory"]],["impl !Send for Mos6510Port",1,["libnoentiendo::memory::mos6510::Mos6510Port"]],["impl !Send for Cia",1,["libnoentiendo::memory::mos652x::cia::Cia"]],["impl !Send for Pia",1,["libnoentiendo::memory::mos652x::pia::Pia"]],["impl !Send for Via",1,["libnoentiendo::memory::mos652x::via::Via"]],["impl !Send for PortRegisters",1,["libnoentiendo::memory::mos652x::PortRegisters"]],["impl Send for TimerOutput",1,["libnoentiendo::memory::mos652x::TimerOutput"]],["impl Send for TimerClockSource",1,["libnoentiendo::memory::mos652x::TimerClockSource"]],["impl Send for Timer",1,["libnoentiendo::memory::mos652x::Timer"]],["impl Send for ShiftRegister",1,["libnoentiendo::memory::mos652x::ShiftRegister"]],["impl Send for InterruptRegister",1,["libnoentiendo::memory::mos652x::InterruptRegister"]],["impl Send for NullMemory",1,["libnoentiendo::memory::null::NullMemory"]],["impl Send for NullPort",1,["libnoentiendo::memory::ports::NullPort"]],["impl Send for ActiveInterrupt",1,["libnoentiendo::memory::ActiveInterrupt"]],["impl Send for SystemInfo",1,["libnoentiendo::memory::SystemInfo"]],["impl Send for C64Keys",1,["libnoentiendo::keyboard::commodore::C64Keys"]],["impl Send for C64KeyboardAdapter",1,["libnoentiendo::keyboard::commodore::C64KeyboardAdapter"]],["impl Send for C64SymbolAdapter",1,["libnoentiendo::keyboard::commodore::C64SymbolAdapter"]],["impl Send for C64VirtualAdapter",1,["libnoentiendo::keyboard::commodore::C64VirtualAdapter"]],["impl Send for KeyPosition",1,["libnoentiendo::keyboard::positions::KeyPosition"]],["impl Send for KeySymbol",1,["libnoentiendo::keyboard::symbols::KeySymbol"]],["impl Send for SymbolAdapter",1,["libnoentiendo::keyboard::symbols::SymbolAdapter"]],["impl Send for VirtualKey",1,["libnoentiendo::keyboard::virtualkey::VirtualKey"]],["impl<T> Send for KeyState<T>where\n T: Send,",1,["libnoentiendo::keyboard::KeyState"]],["impl Send for KeyMappingStrategy",1,["libnoentiendo::keyboard::KeyMappingStrategy"]],["impl Send for TextPlatform",1,["libnoentiendo::platform::text::TextPlatform"]],["impl Send for TextPlatformProvider",1,["libnoentiendo::platform::text::TextPlatformProvider"]],["impl Send for WinitPlatform",1,["libnoentiendo::platform::winit::WinitPlatform"]],["impl Send for WinitPlatformProvider",1,["libnoentiendo::platform::winit::WinitPlatformProvider"]],["impl Send for Color",1,["libnoentiendo::platform::Color"]],["impl Send for JoystickState",1,["libnoentiendo::platform::JoystickState"]],["impl Send for WindowConfig",1,["libnoentiendo::platform::WindowConfig"]],["impl Send for RomFile",1,["libnoentiendo::roms::RomFile"]],["impl Send for BasicSystemBuilder",1,["libnoentiendo::systems::basic::BasicSystemBuilder"]],["impl !Send for BasicSystem",1,["libnoentiendo::systems::basic::BasicSystem"]],["impl Send for C64SystemRoms",1,["libnoentiendo::systems::c64::roms::C64SystemRoms"]],["impl !Send for C64BankSwitching",1,["libnoentiendo::systems::c64::C64BankSwitching"]],["impl Send for C64SystemConfig",1,["libnoentiendo::systems::c64::C64SystemConfig"]],["impl Send for C64SystemBuilder",1,["libnoentiendo::systems::c64::C64SystemBuilder"]],["impl !Send for C64System",1,["libnoentiendo::systems::c64::C64System"]],["impl Send for Easy6502SystemBuilder",1,["libnoentiendo::systems::easy::Easy6502SystemBuilder"]],["impl !Send for Easy6502System",1,["libnoentiendo::systems::easy::Easy6502System"]],["impl Send for KlausSystemBuilder",1,["libnoentiendo::systems::klaus::KlausSystemBuilder"]],["impl !Send for KlausSystem",1,["libnoentiendo::systems::klaus::KlausSystem"]],["impl Send for PetSystemRoms",1,["libnoentiendo::systems::pet::roms::PetSystemRoms"]],["impl Send for PetKeys",1,["libnoentiendo::systems::pet::keyboard::PetKeys"]],["impl !Send for PetPia1PortA",1,["libnoentiendo::systems::pet::PetPia1PortA"]],["impl !Send for PetPia1PortB",1,["libnoentiendo::systems::pet::PetPia1PortB"]],["impl Send for PetSystemConfig",1,["libnoentiendo::systems::pet::PetSystemConfig"]],["impl Send for PetSystemBuilder",1,["libnoentiendo::systems::pet::PetSystemBuilder"]],["impl !Send for PetSystem",1,["libnoentiendo::systems::pet::PetSystem"]],["impl Send for Vic20SystemRoms",1,["libnoentiendo::systems::vic::Vic20SystemRoms"]],["impl !Send for VicVia1PortA",1,["libnoentiendo::systems::vic::VicVia1PortA"]],["impl !Send for VicVia2PortB",1,["libnoentiendo::systems::vic::VicVia2PortB"]],["impl !Send for VicVia2PortA",1,["libnoentiendo::systems::vic::VicVia2PortA"]],["impl Send for Vic20SystemConfig",1,["libnoentiendo::systems::vic::Vic20SystemConfig"]],["impl Send for Vic20SystemBuilder",1,["libnoentiendo::systems::vic::Vic20SystemBuilder"]],["impl !Send for Vic20System",1,["libnoentiendo::systems::vic::Vic20System"]]], +"noentiendo_desktop":[["impl Send for SystemArg",1,["noentiendo_desktop::SystemArg"]],["impl Send for PlatformArg",1,["noentiendo_desktop::PlatformArg"]],["impl Send for KeyMappingArg",1,["noentiendo_desktop::KeyMappingArg"]],["impl Send for Args",1,["noentiendo_desktop::Args"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/marker/trait.StructuralEq.js b/doc/implementors/core/marker/trait.StructuralEq.js index 7e084563..f7d0650f 100644 --- a/doc/implementors/core/marker/trait.StructuralEq.js +++ b/doc/implementors/core/marker/trait.StructuralEq.js @@ -1,4 +1,4 @@ (function() {var implementors = { -"libnoentiendo":[["impl StructuralEq for KeyPosition"],["impl StructuralEq for Color"],["impl StructuralEq for ActiveInterrupt"],["impl StructuralEq for C64Keys"],["impl StructuralEq for VirtualKey"],["impl StructuralEq for KeySymbol"],["impl StructuralEq for PetKeys"]], -"noentiendo_desktop":[["impl StructuralEq for PlatformArg"],["impl StructuralEq for KeyMappingArg"],["impl StructuralEq for SystemArg"]] +"libnoentiendo":[["impl StructuralEq for ActiveInterrupt"],["impl StructuralEq for C64Keys"],["impl StructuralEq for KeyPosition"],["impl StructuralEq for KeySymbol"],["impl StructuralEq for VirtualKey"],["impl StructuralEq for Color"],["impl StructuralEq for PetKeys"]], +"noentiendo_desktop":[["impl StructuralEq for PlatformArg"],["impl StructuralEq for SystemArg"],["impl StructuralEq for KeyMappingArg"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/marker/trait.StructuralPartialEq.js b/doc/implementors/core/marker/trait.StructuralPartialEq.js index cff3dc05..aac9199d 100644 --- a/doc/implementors/core/marker/trait.StructuralPartialEq.js +++ b/doc/implementors/core/marker/trait.StructuralPartialEq.js @@ -1,4 +1,4 @@ (function() {var implementors = { -"libnoentiendo":[["impl StructuralPartialEq for PetKeys"],["impl StructuralPartialEq for C64Keys"],["impl StructuralPartialEq for ActiveInterrupt"],["impl StructuralPartialEq for WindowConfig"],["impl StructuralPartialEq for KeyPosition"],["impl StructuralPartialEq for VirtualKey"],["impl<T: PartialEq> StructuralPartialEq for KeyState<T>"],["impl StructuralPartialEq for Color"],["impl StructuralPartialEq for KeySymbol"],["impl StructuralPartialEq for JoystickState"]], -"noentiendo_desktop":[["impl StructuralPartialEq for KeyMappingArg"],["impl StructuralPartialEq for PlatformArg"],["impl StructuralPartialEq for SystemArg"]] +"libnoentiendo":[["impl StructuralPartialEq for WindowConfig"],["impl StructuralPartialEq for JoystickState"],["impl StructuralPartialEq for C64Keys"],["impl StructuralPartialEq for VirtualKey"],["impl StructuralPartialEq for PetKeys"],["impl<T: PartialEq> StructuralPartialEq for KeyState<T>"],["impl StructuralPartialEq for KeyPosition"],["impl StructuralPartialEq for ActiveInterrupt"],["impl StructuralPartialEq for KeySymbol"],["impl StructuralPartialEq for Color"]], +"noentiendo_desktop":[["impl StructuralPartialEq for KeyMappingArg"],["impl StructuralPartialEq for SystemArg"],["impl StructuralPartialEq for PlatformArg"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/marker/trait.Sync.js b/doc/implementors/core/marker/trait.Sync.js index d5045c69..d20ce715 100644 --- a/doc/implementors/core/marker/trait.Sync.js +++ b/doc/implementors/core/marker/trait.Sync.js @@ -1,4 +1,4 @@ (function() {var implementors = { -"libnoentiendo":[["impl !Sync for Mos6502",1,["libnoentiendo::cpu::Mos6502"]],["impl !Sync for BankedMemory",1,["libnoentiendo::memory::banked::BankedMemory"]],["impl Sync for BlockMemory",1,["libnoentiendo::memory::block::BlockMemory"]],["impl !Sync for BranchMemory",1,["libnoentiendo::memory::branch::BranchMemory"]],["impl !Sync for Mos6510Port",1,["libnoentiendo::memory::mos6510::Mos6510Port"]],["impl !Sync for Cia",1,["libnoentiendo::memory::mos652x::cia::Cia"]],["impl !Sync for Pia",1,["libnoentiendo::memory::mos652x::pia::Pia"]],["impl !Sync for Via",1,["libnoentiendo::memory::mos652x::via::Via"]],["impl !Sync for PortRegisters",1,["libnoentiendo::memory::mos652x::PortRegisters"]],["impl Sync for TimerOutput",1,["libnoentiendo::memory::mos652x::TimerOutput"]],["impl Sync for TimerClockSource",1,["libnoentiendo::memory::mos652x::TimerClockSource"]],["impl Sync for Timer",1,["libnoentiendo::memory::mos652x::Timer"]],["impl Sync for ShiftRegister",1,["libnoentiendo::memory::mos652x::ShiftRegister"]],["impl Sync for InterruptRegister",1,["libnoentiendo::memory::mos652x::InterruptRegister"]],["impl Sync for NullMemory",1,["libnoentiendo::memory::null::NullMemory"]],["impl Sync for NullPort",1,["libnoentiendo::memory::ports::NullPort"]],["impl Sync for ActiveInterrupt",1,["libnoentiendo::memory::ActiveInterrupt"]],["impl Sync for SystemInfo",1,["libnoentiendo::memory::SystemInfo"]],["impl Sync for C64Keys",1,["libnoentiendo::keyboard::commodore::C64Keys"]],["impl Sync for C64KeyboardAdapter",1,["libnoentiendo::keyboard::commodore::C64KeyboardAdapter"]],["impl Sync for C64SymbolAdapter",1,["libnoentiendo::keyboard::commodore::C64SymbolAdapter"]],["impl Sync for C64VirtualAdapter",1,["libnoentiendo::keyboard::commodore::C64VirtualAdapter"]],["impl Sync for KeyPosition",1,["libnoentiendo::keyboard::positions::KeyPosition"]],["impl Sync for KeySymbol",1,["libnoentiendo::keyboard::symbols::KeySymbol"]],["impl Sync for SymbolAdapter",1,["libnoentiendo::keyboard::symbols::SymbolAdapter"]],["impl Sync for VirtualKey",1,["libnoentiendo::keyboard::virtualkey::VirtualKey"]],["impl<T> Sync for KeyState<T>where\n T: Sync,",1,["libnoentiendo::keyboard::KeyState"]],["impl Sync for KeyMappingStrategy",1,["libnoentiendo::keyboard::KeyMappingStrategy"]],["impl Sync for TextPlatform",1,["libnoentiendo::platform::text::TextPlatform"]],["impl Sync for TextPlatformProvider",1,["libnoentiendo::platform::text::TextPlatformProvider"]],["impl Sync for WinitPlatform",1,["libnoentiendo::platform::winit::WinitPlatform"]],["impl Sync for WinitPlatformProvider",1,["libnoentiendo::platform::winit::WinitPlatformProvider"]],["impl Sync for Color",1,["libnoentiendo::platform::Color"]],["impl Sync for JoystickState",1,["libnoentiendo::platform::JoystickState"]],["impl Sync for WindowConfig",1,["libnoentiendo::platform::WindowConfig"]],["impl Sync for RomFile",1,["libnoentiendo::roms::RomFile"]],["impl Sync for BasicSystemBuilder",1,["libnoentiendo::systems::basic::BasicSystemBuilder"]],["impl !Sync for BasicSystem",1,["libnoentiendo::systems::basic::BasicSystem"]],["impl Sync for C64SystemRoms",1,["libnoentiendo::systems::c64::roms::C64SystemRoms"]],["impl !Sync for C64BankSwitching",1,["libnoentiendo::systems::c64::C64BankSwitching"]],["impl Sync for C64SystemConfig",1,["libnoentiendo::systems::c64::C64SystemConfig"]],["impl Sync for C64SystemBuilder",1,["libnoentiendo::systems::c64::C64SystemBuilder"]],["impl !Sync for C64System",1,["libnoentiendo::systems::c64::C64System"]],["impl Sync for Easy6502SystemBuilder",1,["libnoentiendo::systems::easy::Easy6502SystemBuilder"]],["impl !Sync for Easy6502System",1,["libnoentiendo::systems::easy::Easy6502System"]],["impl Sync for KlausSystemBuilder",1,["libnoentiendo::systems::klaus::KlausSystemBuilder"]],["impl !Sync for KlausSystem",1,["libnoentiendo::systems::klaus::KlausSystem"]],["impl Sync for PetSystemRoms",1,["libnoentiendo::systems::pet::roms::PetSystemRoms"]],["impl Sync for PetKeys",1,["libnoentiendo::systems::pet::keyboard::PetKeys"]],["impl !Sync for PetPia1PortA",1,["libnoentiendo::systems::pet::PetPia1PortA"]],["impl !Sync for PetPia1PortB",1,["libnoentiendo::systems::pet::PetPia1PortB"]],["impl Sync for PetSystemConfig",1,["libnoentiendo::systems::pet::PetSystemConfig"]],["impl Sync for PetSystemBuilder",1,["libnoentiendo::systems::pet::PetSystemBuilder"]],["impl !Sync for PetSystem",1,["libnoentiendo::systems::pet::PetSystem"]],["impl Sync for Vic20SystemRoms",1,["libnoentiendo::systems::vic::Vic20SystemRoms"]],["impl !Sync for VicVia1PortA",1,["libnoentiendo::systems::vic::VicVia1PortA"]],["impl !Sync for VicVia2PortB",1,["libnoentiendo::systems::vic::VicVia2PortB"]],["impl !Sync for VicVia2PortA",1,["libnoentiendo::systems::vic::VicVia2PortA"]],["impl Sync for Vic20SystemConfig",1,["libnoentiendo::systems::vic::Vic20SystemConfig"]],["impl Sync for Vic20SystemBuilder",1,["libnoentiendo::systems::vic::Vic20SystemBuilder"]],["impl !Sync for Vic20System",1,["libnoentiendo::systems::vic::Vic20System"]]], -"noentiendo_desktop":[["impl Sync for SystemArg",1,["noentiendo_desktop::SystemArg"]],["impl Sync for PlatformArg",1,["noentiendo_desktop::PlatformArg"]],["impl Sync for KeyMappingArg",1,["noentiendo_desktop::KeyMappingArg"]],["impl Sync for Args",1,["noentiendo_desktop::Args"]]] +"libnoentiendo":[["impl !Sync for Mos6502",1,["libnoentiendo::cpu::Mos6502"]],["impl !Sync for BankedMemory",1,["libnoentiendo::memory::banked::BankedMemory"]],["impl Sync for BlockMemory",1,["libnoentiendo::memory::block::BlockMemory"]],["impl !Sync for BranchMemory",1,["libnoentiendo::memory::branch::BranchMemory"]],["impl !Sync for Mos6510Port",1,["libnoentiendo::memory::mos6510::Mos6510Port"]],["impl !Sync for Cia",1,["libnoentiendo::memory::mos652x::cia::Cia"]],["impl !Sync for Pia",1,["libnoentiendo::memory::mos652x::pia::Pia"]],["impl !Sync for Via",1,["libnoentiendo::memory::mos652x::via::Via"]],["impl !Sync for PortRegisters",1,["libnoentiendo::memory::mos652x::PortRegisters"]],["impl Sync for TimerOutput",1,["libnoentiendo::memory::mos652x::TimerOutput"]],["impl Sync for TimerClockSource",1,["libnoentiendo::memory::mos652x::TimerClockSource"]],["impl Sync for Timer",1,["libnoentiendo::memory::mos652x::Timer"]],["impl Sync for ShiftRegister",1,["libnoentiendo::memory::mos652x::ShiftRegister"]],["impl Sync for InterruptRegister",1,["libnoentiendo::memory::mos652x::InterruptRegister"]],["impl Sync for NullMemory",1,["libnoentiendo::memory::null::NullMemory"]],["impl Sync for NullPort",1,["libnoentiendo::memory::ports::NullPort"]],["impl Sync for ActiveInterrupt",1,["libnoentiendo::memory::ActiveInterrupt"]],["impl Sync for SystemInfo",1,["libnoentiendo::memory::SystemInfo"]],["impl Sync for C64Keys",1,["libnoentiendo::keyboard::commodore::C64Keys"]],["impl Sync for C64KeyboardAdapter",1,["libnoentiendo::keyboard::commodore::C64KeyboardAdapter"]],["impl Sync for C64SymbolAdapter",1,["libnoentiendo::keyboard::commodore::C64SymbolAdapter"]],["impl Sync for C64VirtualAdapter",1,["libnoentiendo::keyboard::commodore::C64VirtualAdapter"]],["impl Sync for KeyPosition",1,["libnoentiendo::keyboard::positions::KeyPosition"]],["impl Sync for KeySymbol",1,["libnoentiendo::keyboard::symbols::KeySymbol"]],["impl Sync for SymbolAdapter",1,["libnoentiendo::keyboard::symbols::SymbolAdapter"]],["impl Sync for VirtualKey",1,["libnoentiendo::keyboard::virtualkey::VirtualKey"]],["impl<T> Sync for KeyState<T>where\n T: Sync,",1,["libnoentiendo::keyboard::KeyState"]],["impl Sync for KeyMappingStrategy",1,["libnoentiendo::keyboard::KeyMappingStrategy"]],["impl Sync for TextPlatform",1,["libnoentiendo::platform::text::TextPlatform"]],["impl Sync for TextPlatformProvider",1,["libnoentiendo::platform::text::TextPlatformProvider"]],["impl Sync for WinitPlatform",1,["libnoentiendo::platform::winit::WinitPlatform"]],["impl Sync for WinitPlatformProvider",1,["libnoentiendo::platform::winit::WinitPlatformProvider"]],["impl Sync for Color",1,["libnoentiendo::platform::Color"]],["impl Sync for JoystickState",1,["libnoentiendo::platform::JoystickState"]],["impl Sync for WindowConfig",1,["libnoentiendo::platform::WindowConfig"]],["impl Sync for RomFile",1,["libnoentiendo::roms::RomFile"]],["impl Sync for BasicSystemBuilder",1,["libnoentiendo::systems::basic::BasicSystemBuilder"]],["impl !Sync for BasicSystem",1,["libnoentiendo::systems::basic::BasicSystem"]],["impl Sync for C64SystemRoms",1,["libnoentiendo::systems::c64::roms::C64SystemRoms"]],["impl !Sync for C64BankSwitching",1,["libnoentiendo::systems::c64::C64BankSwitching"]],["impl Sync for C64SystemConfig",1,["libnoentiendo::systems::c64::C64SystemConfig"]],["impl Sync for C64SystemBuilder",1,["libnoentiendo::systems::c64::C64SystemBuilder"]],["impl !Sync for C64System",1,["libnoentiendo::systems::c64::C64System"]],["impl Sync for Easy6502SystemBuilder",1,["libnoentiendo::systems::easy::Easy6502SystemBuilder"]],["impl !Sync for Easy6502System",1,["libnoentiendo::systems::easy::Easy6502System"]],["impl Sync for KlausSystemBuilder",1,["libnoentiendo::systems::klaus::KlausSystemBuilder"]],["impl !Sync for KlausSystem",1,["libnoentiendo::systems::klaus::KlausSystem"]],["impl Sync for PetSystemRoms",1,["libnoentiendo::systems::pet::roms::PetSystemRoms"]],["impl Sync for PetKeys",1,["libnoentiendo::systems::pet::keyboard::PetKeys"]],["impl !Sync for PetPia1PortA",1,["libnoentiendo::systems::pet::PetPia1PortA"]],["impl !Sync for PetPia1PortB",1,["libnoentiendo::systems::pet::PetPia1PortB"]],["impl Sync for PetSystemConfig",1,["libnoentiendo::systems::pet::PetSystemConfig"]],["impl Sync for PetSystemBuilder",1,["libnoentiendo::systems::pet::PetSystemBuilder"]],["impl !Sync for PetSystem",1,["libnoentiendo::systems::pet::PetSystem"]],["impl Sync for Vic20SystemRoms",1,["libnoentiendo::systems::vic::Vic20SystemRoms"]],["impl !Sync for VicVia1PortA",1,["libnoentiendo::systems::vic::VicVia1PortA"]],["impl !Sync for VicVia2PortB",1,["libnoentiendo::systems::vic::VicVia2PortB"]],["impl !Sync for VicVia2PortA",1,["libnoentiendo::systems::vic::VicVia2PortA"]],["impl Sync for Vic20SystemConfig",1,["libnoentiendo::systems::vic::Vic20SystemConfig"]],["impl Sync for Vic20SystemBuilder",1,["libnoentiendo::systems::vic::Vic20SystemBuilder"]],["impl !Sync for Vic20System",1,["libnoentiendo::systems::vic::Vic20System"]]], +"noentiendo_desktop":[["impl Sync for SystemArg",1,["noentiendo_desktop::SystemArg"]],["impl Sync for PlatformArg",1,["noentiendo_desktop::PlatformArg"]],["impl Sync for KeyMappingArg",1,["noentiendo_desktop::KeyMappingArg"]],["impl Sync for Args",1,["noentiendo_desktop::Args"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/marker/trait.Unpin.js b/doc/implementors/core/marker/trait.Unpin.js index 79e55fda..b6c1e661 100644 --- a/doc/implementors/core/marker/trait.Unpin.js +++ b/doc/implementors/core/marker/trait.Unpin.js @@ -1,4 +1,4 @@ (function() {var implementors = { -"libnoentiendo":[["impl Unpin for Mos6502",1,["libnoentiendo::cpu::Mos6502"]],["impl Unpin for BankedMemory",1,["libnoentiendo::memory::banked::BankedMemory"]],["impl Unpin for BlockMemory",1,["libnoentiendo::memory::block::BlockMemory"]],["impl Unpin for BranchMemory",1,["libnoentiendo::memory::branch::BranchMemory"]],["impl Unpin for Mos6510Port",1,["libnoentiendo::memory::mos6510::Mos6510Port"]],["impl Unpin for Cia",1,["libnoentiendo::memory::mos652x::cia::Cia"]],["impl Unpin for Pia",1,["libnoentiendo::memory::mos652x::pia::Pia"]],["impl Unpin for Via",1,["libnoentiendo::memory::mos652x::via::Via"]],["impl Unpin for PortRegisters",1,["libnoentiendo::memory::mos652x::PortRegisters"]],["impl Unpin for TimerOutput",1,["libnoentiendo::memory::mos652x::TimerOutput"]],["impl Unpin for TimerClockSource",1,["libnoentiendo::memory::mos652x::TimerClockSource"]],["impl Unpin for Timer",1,["libnoentiendo::memory::mos652x::Timer"]],["impl Unpin for ShiftRegister",1,["libnoentiendo::memory::mos652x::ShiftRegister"]],["impl Unpin for InterruptRegister",1,["libnoentiendo::memory::mos652x::InterruptRegister"]],["impl Unpin for NullMemory",1,["libnoentiendo::memory::null::NullMemory"]],["impl Unpin for NullPort",1,["libnoentiendo::memory::ports::NullPort"]],["impl Unpin for ActiveInterrupt",1,["libnoentiendo::memory::ActiveInterrupt"]],["impl Unpin for SystemInfo",1,["libnoentiendo::memory::SystemInfo"]],["impl Unpin for C64Keys",1,["libnoentiendo::keyboard::commodore::C64Keys"]],["impl Unpin for C64KeyboardAdapter",1,["libnoentiendo::keyboard::commodore::C64KeyboardAdapter"]],["impl Unpin for C64SymbolAdapter",1,["libnoentiendo::keyboard::commodore::C64SymbolAdapter"]],["impl Unpin for C64VirtualAdapter",1,["libnoentiendo::keyboard::commodore::C64VirtualAdapter"]],["impl Unpin for KeyPosition",1,["libnoentiendo::keyboard::positions::KeyPosition"]],["impl Unpin for KeySymbol",1,["libnoentiendo::keyboard::symbols::KeySymbol"]],["impl Unpin for SymbolAdapter",1,["libnoentiendo::keyboard::symbols::SymbolAdapter"]],["impl Unpin for VirtualKey",1,["libnoentiendo::keyboard::virtualkey::VirtualKey"]],["impl<T> Unpin for KeyState<T>where\n T: Unpin,",1,["libnoentiendo::keyboard::KeyState"]],["impl Unpin for KeyMappingStrategy",1,["libnoentiendo::keyboard::KeyMappingStrategy"]],["impl Unpin for TextPlatform",1,["libnoentiendo::platform::text::TextPlatform"]],["impl Unpin for TextPlatformProvider",1,["libnoentiendo::platform::text::TextPlatformProvider"]],["impl Unpin for WinitPlatform",1,["libnoentiendo::platform::winit::WinitPlatform"]],["impl Unpin for WinitPlatformProvider",1,["libnoentiendo::platform::winit::WinitPlatformProvider"]],["impl Unpin for Color",1,["libnoentiendo::platform::Color"]],["impl Unpin for JoystickState",1,["libnoentiendo::platform::JoystickState"]],["impl Unpin for WindowConfig",1,["libnoentiendo::platform::WindowConfig"]],["impl Unpin for RomFile",1,["libnoentiendo::roms::RomFile"]],["impl Unpin for BasicSystemBuilder",1,["libnoentiendo::systems::basic::BasicSystemBuilder"]],["impl Unpin for BasicSystem",1,["libnoentiendo::systems::basic::BasicSystem"]],["impl Unpin for C64SystemRoms",1,["libnoentiendo::systems::c64::roms::C64SystemRoms"]],["impl Unpin for C64BankSwitching",1,["libnoentiendo::systems::c64::C64BankSwitching"]],["impl Unpin for C64SystemConfig",1,["libnoentiendo::systems::c64::C64SystemConfig"]],["impl Unpin for C64SystemBuilder",1,["libnoentiendo::systems::c64::C64SystemBuilder"]],["impl Unpin for C64System",1,["libnoentiendo::systems::c64::C64System"]],["impl Unpin for Easy6502SystemBuilder",1,["libnoentiendo::systems::easy::Easy6502SystemBuilder"]],["impl Unpin for Easy6502System",1,["libnoentiendo::systems::easy::Easy6502System"]],["impl Unpin for KlausSystemBuilder",1,["libnoentiendo::systems::klaus::KlausSystemBuilder"]],["impl Unpin for KlausSystem",1,["libnoentiendo::systems::klaus::KlausSystem"]],["impl Unpin for PetSystemRoms",1,["libnoentiendo::systems::pet::roms::PetSystemRoms"]],["impl Unpin for PetKeys",1,["libnoentiendo::systems::pet::keyboard::PetKeys"]],["impl Unpin for PetPia1PortA",1,["libnoentiendo::systems::pet::PetPia1PortA"]],["impl Unpin for PetPia1PortB",1,["libnoentiendo::systems::pet::PetPia1PortB"]],["impl Unpin for PetSystemConfig",1,["libnoentiendo::systems::pet::PetSystemConfig"]],["impl Unpin for PetSystemBuilder",1,["libnoentiendo::systems::pet::PetSystemBuilder"]],["impl Unpin for PetSystem",1,["libnoentiendo::systems::pet::PetSystem"]],["impl Unpin for Vic20SystemRoms",1,["libnoentiendo::systems::vic::Vic20SystemRoms"]],["impl Unpin for VicVia1PortA",1,["libnoentiendo::systems::vic::VicVia1PortA"]],["impl Unpin for VicVia2PortB",1,["libnoentiendo::systems::vic::VicVia2PortB"]],["impl Unpin for VicVia2PortA",1,["libnoentiendo::systems::vic::VicVia2PortA"]],["impl Unpin for Vic20SystemConfig",1,["libnoentiendo::systems::vic::Vic20SystemConfig"]],["impl Unpin for Vic20SystemBuilder",1,["libnoentiendo::systems::vic::Vic20SystemBuilder"]],["impl Unpin for Vic20System",1,["libnoentiendo::systems::vic::Vic20System"]]], -"noentiendo_desktop":[["impl Unpin for SystemArg",1,["noentiendo_desktop::SystemArg"]],["impl Unpin for PlatformArg",1,["noentiendo_desktop::PlatformArg"]],["impl Unpin for KeyMappingArg",1,["noentiendo_desktop::KeyMappingArg"]],["impl Unpin for Args",1,["noentiendo_desktop::Args"]]] +"libnoentiendo":[["impl Unpin for Mos6502",1,["libnoentiendo::cpu::Mos6502"]],["impl Unpin for BankedMemory",1,["libnoentiendo::memory::banked::BankedMemory"]],["impl Unpin for BlockMemory",1,["libnoentiendo::memory::block::BlockMemory"]],["impl Unpin for BranchMemory",1,["libnoentiendo::memory::branch::BranchMemory"]],["impl Unpin for Mos6510Port",1,["libnoentiendo::memory::mos6510::Mos6510Port"]],["impl Unpin for Cia",1,["libnoentiendo::memory::mos652x::cia::Cia"]],["impl Unpin for Pia",1,["libnoentiendo::memory::mos652x::pia::Pia"]],["impl Unpin for Via",1,["libnoentiendo::memory::mos652x::via::Via"]],["impl Unpin for PortRegisters",1,["libnoentiendo::memory::mos652x::PortRegisters"]],["impl Unpin for TimerOutput",1,["libnoentiendo::memory::mos652x::TimerOutput"]],["impl Unpin for TimerClockSource",1,["libnoentiendo::memory::mos652x::TimerClockSource"]],["impl Unpin for Timer",1,["libnoentiendo::memory::mos652x::Timer"]],["impl Unpin for ShiftRegister",1,["libnoentiendo::memory::mos652x::ShiftRegister"]],["impl Unpin for InterruptRegister",1,["libnoentiendo::memory::mos652x::InterruptRegister"]],["impl Unpin for NullMemory",1,["libnoentiendo::memory::null::NullMemory"]],["impl Unpin for NullPort",1,["libnoentiendo::memory::ports::NullPort"]],["impl Unpin for ActiveInterrupt",1,["libnoentiendo::memory::ActiveInterrupt"]],["impl Unpin for SystemInfo",1,["libnoentiendo::memory::SystemInfo"]],["impl Unpin for C64Keys",1,["libnoentiendo::keyboard::commodore::C64Keys"]],["impl Unpin for C64KeyboardAdapter",1,["libnoentiendo::keyboard::commodore::C64KeyboardAdapter"]],["impl Unpin for C64SymbolAdapter",1,["libnoentiendo::keyboard::commodore::C64SymbolAdapter"]],["impl Unpin for C64VirtualAdapter",1,["libnoentiendo::keyboard::commodore::C64VirtualAdapter"]],["impl Unpin for KeyPosition",1,["libnoentiendo::keyboard::positions::KeyPosition"]],["impl Unpin for KeySymbol",1,["libnoentiendo::keyboard::symbols::KeySymbol"]],["impl Unpin for SymbolAdapter",1,["libnoentiendo::keyboard::symbols::SymbolAdapter"]],["impl Unpin for VirtualKey",1,["libnoentiendo::keyboard::virtualkey::VirtualKey"]],["impl<T> Unpin for KeyState<T>where\n T: Unpin,",1,["libnoentiendo::keyboard::KeyState"]],["impl Unpin for KeyMappingStrategy",1,["libnoentiendo::keyboard::KeyMappingStrategy"]],["impl Unpin for TextPlatform",1,["libnoentiendo::platform::text::TextPlatform"]],["impl Unpin for TextPlatformProvider",1,["libnoentiendo::platform::text::TextPlatformProvider"]],["impl Unpin for WinitPlatform",1,["libnoentiendo::platform::winit::WinitPlatform"]],["impl Unpin for WinitPlatformProvider",1,["libnoentiendo::platform::winit::WinitPlatformProvider"]],["impl Unpin for Color",1,["libnoentiendo::platform::Color"]],["impl Unpin for JoystickState",1,["libnoentiendo::platform::JoystickState"]],["impl Unpin for WindowConfig",1,["libnoentiendo::platform::WindowConfig"]],["impl Unpin for RomFile",1,["libnoentiendo::roms::RomFile"]],["impl Unpin for BasicSystemBuilder",1,["libnoentiendo::systems::basic::BasicSystemBuilder"]],["impl Unpin for BasicSystem",1,["libnoentiendo::systems::basic::BasicSystem"]],["impl Unpin for C64SystemRoms",1,["libnoentiendo::systems::c64::roms::C64SystemRoms"]],["impl Unpin for C64BankSwitching",1,["libnoentiendo::systems::c64::C64BankSwitching"]],["impl Unpin for C64SystemConfig",1,["libnoentiendo::systems::c64::C64SystemConfig"]],["impl Unpin for C64SystemBuilder",1,["libnoentiendo::systems::c64::C64SystemBuilder"]],["impl Unpin for C64System",1,["libnoentiendo::systems::c64::C64System"]],["impl Unpin for Easy6502SystemBuilder",1,["libnoentiendo::systems::easy::Easy6502SystemBuilder"]],["impl Unpin for Easy6502System",1,["libnoentiendo::systems::easy::Easy6502System"]],["impl Unpin for KlausSystemBuilder",1,["libnoentiendo::systems::klaus::KlausSystemBuilder"]],["impl Unpin for KlausSystem",1,["libnoentiendo::systems::klaus::KlausSystem"]],["impl Unpin for PetSystemRoms",1,["libnoentiendo::systems::pet::roms::PetSystemRoms"]],["impl Unpin for PetKeys",1,["libnoentiendo::systems::pet::keyboard::PetKeys"]],["impl Unpin for PetPia1PortA",1,["libnoentiendo::systems::pet::PetPia1PortA"]],["impl Unpin for PetPia1PortB",1,["libnoentiendo::systems::pet::PetPia1PortB"]],["impl Unpin for PetSystemConfig",1,["libnoentiendo::systems::pet::PetSystemConfig"]],["impl Unpin for PetSystemBuilder",1,["libnoentiendo::systems::pet::PetSystemBuilder"]],["impl Unpin for PetSystem",1,["libnoentiendo::systems::pet::PetSystem"]],["impl Unpin for Vic20SystemRoms",1,["libnoentiendo::systems::vic::Vic20SystemRoms"]],["impl Unpin for VicVia1PortA",1,["libnoentiendo::systems::vic::VicVia1PortA"]],["impl Unpin for VicVia2PortB",1,["libnoentiendo::systems::vic::VicVia2PortB"]],["impl Unpin for VicVia2PortA",1,["libnoentiendo::systems::vic::VicVia2PortA"]],["impl Unpin for Vic20SystemConfig",1,["libnoentiendo::systems::vic::Vic20SystemConfig"]],["impl Unpin for Vic20SystemBuilder",1,["libnoentiendo::systems::vic::Vic20SystemBuilder"]],["impl Unpin for Vic20System",1,["libnoentiendo::systems::vic::Vic20System"]]], +"noentiendo_desktop":[["impl Unpin for SystemArg",1,["noentiendo_desktop::SystemArg"]],["impl Unpin for PlatformArg",1,["noentiendo_desktop::PlatformArg"]],["impl Unpin for KeyMappingArg",1,["noentiendo_desktop::KeyMappingArg"]],["impl Unpin for Args",1,["noentiendo_desktop::Args"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/ops/bit/trait.BitOr.js b/doc/implementors/core/ops/bit/trait.BitOr.js index 11ff948a..ad41c44f 100644 --- a/doc/implementors/core/ops/bit/trait.BitOr.js +++ b/doc/implementors/core/ops/bit/trait.BitOr.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"libnoentiendo":[["impl<T: PartialEq> BitOr<KeyState<T>> for KeyState<T>"]] +"libnoentiendo":[["impl<T: PartialEq> BitOr<KeyState<T>> for KeyState<T>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js index b38ed175..9919a3b5 100644 --- a/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -1,4 +1,4 @@ (function() {var implementors = { -"libnoentiendo":[["impl !RefUnwindSafe for Mos6502",1,["libnoentiendo::cpu::Mos6502"]],["impl !RefUnwindSafe for BankedMemory",1,["libnoentiendo::memory::banked::BankedMemory"]],["impl RefUnwindSafe for BlockMemory",1,["libnoentiendo::memory::block::BlockMemory"]],["impl !RefUnwindSafe for BranchMemory",1,["libnoentiendo::memory::branch::BranchMemory"]],["impl !RefUnwindSafe for Mos6510Port",1,["libnoentiendo::memory::mos6510::Mos6510Port"]],["impl !RefUnwindSafe for Cia",1,["libnoentiendo::memory::mos652x::cia::Cia"]],["impl !RefUnwindSafe for Pia",1,["libnoentiendo::memory::mos652x::pia::Pia"]],["impl !RefUnwindSafe for Via",1,["libnoentiendo::memory::mos652x::via::Via"]],["impl !RefUnwindSafe for PortRegisters",1,["libnoentiendo::memory::mos652x::PortRegisters"]],["impl RefUnwindSafe for TimerOutput",1,["libnoentiendo::memory::mos652x::TimerOutput"]],["impl RefUnwindSafe for TimerClockSource",1,["libnoentiendo::memory::mos652x::TimerClockSource"]],["impl RefUnwindSafe for Timer",1,["libnoentiendo::memory::mos652x::Timer"]],["impl RefUnwindSafe for ShiftRegister",1,["libnoentiendo::memory::mos652x::ShiftRegister"]],["impl RefUnwindSafe for InterruptRegister",1,["libnoentiendo::memory::mos652x::InterruptRegister"]],["impl RefUnwindSafe for NullMemory",1,["libnoentiendo::memory::null::NullMemory"]],["impl RefUnwindSafe for NullPort",1,["libnoentiendo::memory::ports::NullPort"]],["impl RefUnwindSafe for ActiveInterrupt",1,["libnoentiendo::memory::ActiveInterrupt"]],["impl RefUnwindSafe for SystemInfo",1,["libnoentiendo::memory::SystemInfo"]],["impl RefUnwindSafe for C64Keys",1,["libnoentiendo::keyboard::commodore::C64Keys"]],["impl RefUnwindSafe for C64KeyboardAdapter",1,["libnoentiendo::keyboard::commodore::C64KeyboardAdapter"]],["impl RefUnwindSafe for C64SymbolAdapter",1,["libnoentiendo::keyboard::commodore::C64SymbolAdapter"]],["impl RefUnwindSafe for C64VirtualAdapter",1,["libnoentiendo::keyboard::commodore::C64VirtualAdapter"]],["impl RefUnwindSafe for KeyPosition",1,["libnoentiendo::keyboard::positions::KeyPosition"]],["impl RefUnwindSafe for KeySymbol",1,["libnoentiendo::keyboard::symbols::KeySymbol"]],["impl RefUnwindSafe for SymbolAdapter",1,["libnoentiendo::keyboard::symbols::SymbolAdapter"]],["impl RefUnwindSafe for VirtualKey",1,["libnoentiendo::keyboard::virtualkey::VirtualKey"]],["impl<T> RefUnwindSafe for KeyState<T>where\n T: RefUnwindSafe,",1,["libnoentiendo::keyboard::KeyState"]],["impl RefUnwindSafe for KeyMappingStrategy",1,["libnoentiendo::keyboard::KeyMappingStrategy"]],["impl RefUnwindSafe for TextPlatform",1,["libnoentiendo::platform::text::TextPlatform"]],["impl RefUnwindSafe for TextPlatformProvider",1,["libnoentiendo::platform::text::TextPlatformProvider"]],["impl RefUnwindSafe for WinitPlatform",1,["libnoentiendo::platform::winit::WinitPlatform"]],["impl RefUnwindSafe for WinitPlatformProvider",1,["libnoentiendo::platform::winit::WinitPlatformProvider"]],["impl RefUnwindSafe for Color",1,["libnoentiendo::platform::Color"]],["impl RefUnwindSafe for JoystickState",1,["libnoentiendo::platform::JoystickState"]],["impl RefUnwindSafe for WindowConfig",1,["libnoentiendo::platform::WindowConfig"]],["impl RefUnwindSafe for RomFile",1,["libnoentiendo::roms::RomFile"]],["impl RefUnwindSafe for BasicSystemBuilder",1,["libnoentiendo::systems::basic::BasicSystemBuilder"]],["impl !RefUnwindSafe for BasicSystem",1,["libnoentiendo::systems::basic::BasicSystem"]],["impl RefUnwindSafe for C64SystemRoms",1,["libnoentiendo::systems::c64::roms::C64SystemRoms"]],["impl !RefUnwindSafe for C64BankSwitching",1,["libnoentiendo::systems::c64::C64BankSwitching"]],["impl RefUnwindSafe for C64SystemConfig",1,["libnoentiendo::systems::c64::C64SystemConfig"]],["impl RefUnwindSafe for C64SystemBuilder",1,["libnoentiendo::systems::c64::C64SystemBuilder"]],["impl !RefUnwindSafe for C64System",1,["libnoentiendo::systems::c64::C64System"]],["impl RefUnwindSafe for Easy6502SystemBuilder",1,["libnoentiendo::systems::easy::Easy6502SystemBuilder"]],["impl !RefUnwindSafe for Easy6502System",1,["libnoentiendo::systems::easy::Easy6502System"]],["impl RefUnwindSafe for KlausSystemBuilder",1,["libnoentiendo::systems::klaus::KlausSystemBuilder"]],["impl !RefUnwindSafe for KlausSystem",1,["libnoentiendo::systems::klaus::KlausSystem"]],["impl RefUnwindSafe for PetSystemRoms",1,["libnoentiendo::systems::pet::roms::PetSystemRoms"]],["impl RefUnwindSafe for PetKeys",1,["libnoentiendo::systems::pet::keyboard::PetKeys"]],["impl !RefUnwindSafe for PetPia1PortA",1,["libnoentiendo::systems::pet::PetPia1PortA"]],["impl !RefUnwindSafe for PetPia1PortB",1,["libnoentiendo::systems::pet::PetPia1PortB"]],["impl RefUnwindSafe for PetSystemConfig",1,["libnoentiendo::systems::pet::PetSystemConfig"]],["impl RefUnwindSafe for PetSystemBuilder",1,["libnoentiendo::systems::pet::PetSystemBuilder"]],["impl !RefUnwindSafe for PetSystem",1,["libnoentiendo::systems::pet::PetSystem"]],["impl RefUnwindSafe for Vic20SystemRoms",1,["libnoentiendo::systems::vic::Vic20SystemRoms"]],["impl !RefUnwindSafe for VicVia1PortA",1,["libnoentiendo::systems::vic::VicVia1PortA"]],["impl !RefUnwindSafe for VicVia2PortB",1,["libnoentiendo::systems::vic::VicVia2PortB"]],["impl !RefUnwindSafe for VicVia2PortA",1,["libnoentiendo::systems::vic::VicVia2PortA"]],["impl RefUnwindSafe for Vic20SystemConfig",1,["libnoentiendo::systems::vic::Vic20SystemConfig"]],["impl RefUnwindSafe for Vic20SystemBuilder",1,["libnoentiendo::systems::vic::Vic20SystemBuilder"]],["impl !RefUnwindSafe for Vic20System",1,["libnoentiendo::systems::vic::Vic20System"]]], -"noentiendo_desktop":[["impl RefUnwindSafe for SystemArg",1,["noentiendo_desktop::SystemArg"]],["impl RefUnwindSafe for PlatformArg",1,["noentiendo_desktop::PlatformArg"]],["impl RefUnwindSafe for KeyMappingArg",1,["noentiendo_desktop::KeyMappingArg"]],["impl RefUnwindSafe for Args",1,["noentiendo_desktop::Args"]]] +"libnoentiendo":[["impl !RefUnwindSafe for Mos6502",1,["libnoentiendo::cpu::Mos6502"]],["impl !RefUnwindSafe for BankedMemory",1,["libnoentiendo::memory::banked::BankedMemory"]],["impl RefUnwindSafe for BlockMemory",1,["libnoentiendo::memory::block::BlockMemory"]],["impl !RefUnwindSafe for BranchMemory",1,["libnoentiendo::memory::branch::BranchMemory"]],["impl !RefUnwindSafe for Mos6510Port",1,["libnoentiendo::memory::mos6510::Mos6510Port"]],["impl !RefUnwindSafe for Cia",1,["libnoentiendo::memory::mos652x::cia::Cia"]],["impl !RefUnwindSafe for Pia",1,["libnoentiendo::memory::mos652x::pia::Pia"]],["impl !RefUnwindSafe for Via",1,["libnoentiendo::memory::mos652x::via::Via"]],["impl !RefUnwindSafe for PortRegisters",1,["libnoentiendo::memory::mos652x::PortRegisters"]],["impl RefUnwindSafe for TimerOutput",1,["libnoentiendo::memory::mos652x::TimerOutput"]],["impl RefUnwindSafe for TimerClockSource",1,["libnoentiendo::memory::mos652x::TimerClockSource"]],["impl RefUnwindSafe for Timer",1,["libnoentiendo::memory::mos652x::Timer"]],["impl RefUnwindSafe for ShiftRegister",1,["libnoentiendo::memory::mos652x::ShiftRegister"]],["impl RefUnwindSafe for InterruptRegister",1,["libnoentiendo::memory::mos652x::InterruptRegister"]],["impl RefUnwindSafe for NullMemory",1,["libnoentiendo::memory::null::NullMemory"]],["impl RefUnwindSafe for NullPort",1,["libnoentiendo::memory::ports::NullPort"]],["impl RefUnwindSafe for ActiveInterrupt",1,["libnoentiendo::memory::ActiveInterrupt"]],["impl RefUnwindSafe for SystemInfo",1,["libnoentiendo::memory::SystemInfo"]],["impl RefUnwindSafe for C64Keys",1,["libnoentiendo::keyboard::commodore::C64Keys"]],["impl RefUnwindSafe for C64KeyboardAdapter",1,["libnoentiendo::keyboard::commodore::C64KeyboardAdapter"]],["impl RefUnwindSafe for C64SymbolAdapter",1,["libnoentiendo::keyboard::commodore::C64SymbolAdapter"]],["impl RefUnwindSafe for C64VirtualAdapter",1,["libnoentiendo::keyboard::commodore::C64VirtualAdapter"]],["impl RefUnwindSafe for KeyPosition",1,["libnoentiendo::keyboard::positions::KeyPosition"]],["impl RefUnwindSafe for KeySymbol",1,["libnoentiendo::keyboard::symbols::KeySymbol"]],["impl RefUnwindSafe for SymbolAdapter",1,["libnoentiendo::keyboard::symbols::SymbolAdapter"]],["impl RefUnwindSafe for VirtualKey",1,["libnoentiendo::keyboard::virtualkey::VirtualKey"]],["impl<T> RefUnwindSafe for KeyState<T>where\n T: RefUnwindSafe,",1,["libnoentiendo::keyboard::KeyState"]],["impl RefUnwindSafe for KeyMappingStrategy",1,["libnoentiendo::keyboard::KeyMappingStrategy"]],["impl RefUnwindSafe for TextPlatform",1,["libnoentiendo::platform::text::TextPlatform"]],["impl RefUnwindSafe for TextPlatformProvider",1,["libnoentiendo::platform::text::TextPlatformProvider"]],["impl RefUnwindSafe for WinitPlatform",1,["libnoentiendo::platform::winit::WinitPlatform"]],["impl RefUnwindSafe for WinitPlatformProvider",1,["libnoentiendo::platform::winit::WinitPlatformProvider"]],["impl RefUnwindSafe for Color",1,["libnoentiendo::platform::Color"]],["impl RefUnwindSafe for JoystickState",1,["libnoentiendo::platform::JoystickState"]],["impl RefUnwindSafe for WindowConfig",1,["libnoentiendo::platform::WindowConfig"]],["impl RefUnwindSafe for RomFile",1,["libnoentiendo::roms::RomFile"]],["impl RefUnwindSafe for BasicSystemBuilder",1,["libnoentiendo::systems::basic::BasicSystemBuilder"]],["impl !RefUnwindSafe for BasicSystem",1,["libnoentiendo::systems::basic::BasicSystem"]],["impl RefUnwindSafe for C64SystemRoms",1,["libnoentiendo::systems::c64::roms::C64SystemRoms"]],["impl !RefUnwindSafe for C64BankSwitching",1,["libnoentiendo::systems::c64::C64BankSwitching"]],["impl RefUnwindSafe for C64SystemConfig",1,["libnoentiendo::systems::c64::C64SystemConfig"]],["impl RefUnwindSafe for C64SystemBuilder",1,["libnoentiendo::systems::c64::C64SystemBuilder"]],["impl !RefUnwindSafe for C64System",1,["libnoentiendo::systems::c64::C64System"]],["impl RefUnwindSafe for Easy6502SystemBuilder",1,["libnoentiendo::systems::easy::Easy6502SystemBuilder"]],["impl !RefUnwindSafe for Easy6502System",1,["libnoentiendo::systems::easy::Easy6502System"]],["impl RefUnwindSafe for KlausSystemBuilder",1,["libnoentiendo::systems::klaus::KlausSystemBuilder"]],["impl !RefUnwindSafe for KlausSystem",1,["libnoentiendo::systems::klaus::KlausSystem"]],["impl RefUnwindSafe for PetSystemRoms",1,["libnoentiendo::systems::pet::roms::PetSystemRoms"]],["impl RefUnwindSafe for PetKeys",1,["libnoentiendo::systems::pet::keyboard::PetKeys"]],["impl !RefUnwindSafe for PetPia1PortA",1,["libnoentiendo::systems::pet::PetPia1PortA"]],["impl !RefUnwindSafe for PetPia1PortB",1,["libnoentiendo::systems::pet::PetPia1PortB"]],["impl RefUnwindSafe for PetSystemConfig",1,["libnoentiendo::systems::pet::PetSystemConfig"]],["impl RefUnwindSafe for PetSystemBuilder",1,["libnoentiendo::systems::pet::PetSystemBuilder"]],["impl !RefUnwindSafe for PetSystem",1,["libnoentiendo::systems::pet::PetSystem"]],["impl RefUnwindSafe for Vic20SystemRoms",1,["libnoentiendo::systems::vic::Vic20SystemRoms"]],["impl !RefUnwindSafe for VicVia1PortA",1,["libnoentiendo::systems::vic::VicVia1PortA"]],["impl !RefUnwindSafe for VicVia2PortB",1,["libnoentiendo::systems::vic::VicVia2PortB"]],["impl !RefUnwindSafe for VicVia2PortA",1,["libnoentiendo::systems::vic::VicVia2PortA"]],["impl RefUnwindSafe for Vic20SystemConfig",1,["libnoentiendo::systems::vic::Vic20SystemConfig"]],["impl RefUnwindSafe for Vic20SystemBuilder",1,["libnoentiendo::systems::vic::Vic20SystemBuilder"]],["impl !RefUnwindSafe for Vic20System",1,["libnoentiendo::systems::vic::Vic20System"]]], +"noentiendo_desktop":[["impl RefUnwindSafe for SystemArg",1,["noentiendo_desktop::SystemArg"]],["impl RefUnwindSafe for PlatformArg",1,["noentiendo_desktop::PlatformArg"]],["impl RefUnwindSafe for KeyMappingArg",1,["noentiendo_desktop::KeyMappingArg"]],["impl RefUnwindSafe for Args",1,["noentiendo_desktop::Args"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js index 3672f558..7b1824db 100644 --- a/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js @@ -1,4 +1,4 @@ (function() {var implementors = { -"libnoentiendo":[["impl !UnwindSafe for Mos6502",1,["libnoentiendo::cpu::Mos6502"]],["impl !UnwindSafe for BankedMemory",1,["libnoentiendo::memory::banked::BankedMemory"]],["impl UnwindSafe for BlockMemory",1,["libnoentiendo::memory::block::BlockMemory"]],["impl !UnwindSafe for BranchMemory",1,["libnoentiendo::memory::branch::BranchMemory"]],["impl !UnwindSafe for Mos6510Port",1,["libnoentiendo::memory::mos6510::Mos6510Port"]],["impl !UnwindSafe for Cia",1,["libnoentiendo::memory::mos652x::cia::Cia"]],["impl !UnwindSafe for Pia",1,["libnoentiendo::memory::mos652x::pia::Pia"]],["impl !UnwindSafe for Via",1,["libnoentiendo::memory::mos652x::via::Via"]],["impl !UnwindSafe for PortRegisters",1,["libnoentiendo::memory::mos652x::PortRegisters"]],["impl UnwindSafe for TimerOutput",1,["libnoentiendo::memory::mos652x::TimerOutput"]],["impl UnwindSafe for TimerClockSource",1,["libnoentiendo::memory::mos652x::TimerClockSource"]],["impl UnwindSafe for Timer",1,["libnoentiendo::memory::mos652x::Timer"]],["impl UnwindSafe for ShiftRegister",1,["libnoentiendo::memory::mos652x::ShiftRegister"]],["impl UnwindSafe for InterruptRegister",1,["libnoentiendo::memory::mos652x::InterruptRegister"]],["impl UnwindSafe for NullMemory",1,["libnoentiendo::memory::null::NullMemory"]],["impl UnwindSafe for NullPort",1,["libnoentiendo::memory::ports::NullPort"]],["impl UnwindSafe for ActiveInterrupt",1,["libnoentiendo::memory::ActiveInterrupt"]],["impl UnwindSafe for SystemInfo",1,["libnoentiendo::memory::SystemInfo"]],["impl UnwindSafe for C64Keys",1,["libnoentiendo::keyboard::commodore::C64Keys"]],["impl UnwindSafe for C64KeyboardAdapter",1,["libnoentiendo::keyboard::commodore::C64KeyboardAdapter"]],["impl UnwindSafe for C64SymbolAdapter",1,["libnoentiendo::keyboard::commodore::C64SymbolAdapter"]],["impl UnwindSafe for C64VirtualAdapter",1,["libnoentiendo::keyboard::commodore::C64VirtualAdapter"]],["impl UnwindSafe for KeyPosition",1,["libnoentiendo::keyboard::positions::KeyPosition"]],["impl UnwindSafe for KeySymbol",1,["libnoentiendo::keyboard::symbols::KeySymbol"]],["impl UnwindSafe for SymbolAdapter",1,["libnoentiendo::keyboard::symbols::SymbolAdapter"]],["impl UnwindSafe for VirtualKey",1,["libnoentiendo::keyboard::virtualkey::VirtualKey"]],["impl<T> UnwindSafe for KeyState<T>where\n T: UnwindSafe,",1,["libnoentiendo::keyboard::KeyState"]],["impl UnwindSafe for KeyMappingStrategy",1,["libnoentiendo::keyboard::KeyMappingStrategy"]],["impl UnwindSafe for TextPlatform",1,["libnoentiendo::platform::text::TextPlatform"]],["impl UnwindSafe for TextPlatformProvider",1,["libnoentiendo::platform::text::TextPlatformProvider"]],["impl UnwindSafe for WinitPlatform",1,["libnoentiendo::platform::winit::WinitPlatform"]],["impl UnwindSafe for WinitPlatformProvider",1,["libnoentiendo::platform::winit::WinitPlatformProvider"]],["impl UnwindSafe for Color",1,["libnoentiendo::platform::Color"]],["impl UnwindSafe for JoystickState",1,["libnoentiendo::platform::JoystickState"]],["impl UnwindSafe for WindowConfig",1,["libnoentiendo::platform::WindowConfig"]],["impl UnwindSafe for RomFile",1,["libnoentiendo::roms::RomFile"]],["impl UnwindSafe for BasicSystemBuilder",1,["libnoentiendo::systems::basic::BasicSystemBuilder"]],["impl !UnwindSafe for BasicSystem",1,["libnoentiendo::systems::basic::BasicSystem"]],["impl UnwindSafe for C64SystemRoms",1,["libnoentiendo::systems::c64::roms::C64SystemRoms"]],["impl !UnwindSafe for C64BankSwitching",1,["libnoentiendo::systems::c64::C64BankSwitching"]],["impl UnwindSafe for C64SystemConfig",1,["libnoentiendo::systems::c64::C64SystemConfig"]],["impl UnwindSafe for C64SystemBuilder",1,["libnoentiendo::systems::c64::C64SystemBuilder"]],["impl !UnwindSafe for C64System",1,["libnoentiendo::systems::c64::C64System"]],["impl UnwindSafe for Easy6502SystemBuilder",1,["libnoentiendo::systems::easy::Easy6502SystemBuilder"]],["impl !UnwindSafe for Easy6502System",1,["libnoentiendo::systems::easy::Easy6502System"]],["impl UnwindSafe for KlausSystemBuilder",1,["libnoentiendo::systems::klaus::KlausSystemBuilder"]],["impl !UnwindSafe for KlausSystem",1,["libnoentiendo::systems::klaus::KlausSystem"]],["impl UnwindSafe for PetSystemRoms",1,["libnoentiendo::systems::pet::roms::PetSystemRoms"]],["impl UnwindSafe for PetKeys",1,["libnoentiendo::systems::pet::keyboard::PetKeys"]],["impl !UnwindSafe for PetPia1PortA",1,["libnoentiendo::systems::pet::PetPia1PortA"]],["impl !UnwindSafe for PetPia1PortB",1,["libnoentiendo::systems::pet::PetPia1PortB"]],["impl UnwindSafe for PetSystemConfig",1,["libnoentiendo::systems::pet::PetSystemConfig"]],["impl UnwindSafe for PetSystemBuilder",1,["libnoentiendo::systems::pet::PetSystemBuilder"]],["impl !UnwindSafe for PetSystem",1,["libnoentiendo::systems::pet::PetSystem"]],["impl UnwindSafe for Vic20SystemRoms",1,["libnoentiendo::systems::vic::Vic20SystemRoms"]],["impl !UnwindSafe for VicVia1PortA",1,["libnoentiendo::systems::vic::VicVia1PortA"]],["impl !UnwindSafe for VicVia2PortB",1,["libnoentiendo::systems::vic::VicVia2PortB"]],["impl !UnwindSafe for VicVia2PortA",1,["libnoentiendo::systems::vic::VicVia2PortA"]],["impl UnwindSafe for Vic20SystemConfig",1,["libnoentiendo::systems::vic::Vic20SystemConfig"]],["impl UnwindSafe for Vic20SystemBuilder",1,["libnoentiendo::systems::vic::Vic20SystemBuilder"]],["impl !UnwindSafe for Vic20System",1,["libnoentiendo::systems::vic::Vic20System"]]], -"noentiendo_desktop":[["impl UnwindSafe for SystemArg",1,["noentiendo_desktop::SystemArg"]],["impl UnwindSafe for PlatformArg",1,["noentiendo_desktop::PlatformArg"]],["impl UnwindSafe for KeyMappingArg",1,["noentiendo_desktop::KeyMappingArg"]],["impl UnwindSafe for Args",1,["noentiendo_desktop::Args"]]] +"libnoentiendo":[["impl !UnwindSafe for Mos6502",1,["libnoentiendo::cpu::Mos6502"]],["impl !UnwindSafe for BankedMemory",1,["libnoentiendo::memory::banked::BankedMemory"]],["impl UnwindSafe for BlockMemory",1,["libnoentiendo::memory::block::BlockMemory"]],["impl !UnwindSafe for BranchMemory",1,["libnoentiendo::memory::branch::BranchMemory"]],["impl !UnwindSafe for Mos6510Port",1,["libnoentiendo::memory::mos6510::Mos6510Port"]],["impl !UnwindSafe for Cia",1,["libnoentiendo::memory::mos652x::cia::Cia"]],["impl !UnwindSafe for Pia",1,["libnoentiendo::memory::mos652x::pia::Pia"]],["impl !UnwindSafe for Via",1,["libnoentiendo::memory::mos652x::via::Via"]],["impl !UnwindSafe for PortRegisters",1,["libnoentiendo::memory::mos652x::PortRegisters"]],["impl UnwindSafe for TimerOutput",1,["libnoentiendo::memory::mos652x::TimerOutput"]],["impl UnwindSafe for TimerClockSource",1,["libnoentiendo::memory::mos652x::TimerClockSource"]],["impl UnwindSafe for Timer",1,["libnoentiendo::memory::mos652x::Timer"]],["impl UnwindSafe for ShiftRegister",1,["libnoentiendo::memory::mos652x::ShiftRegister"]],["impl UnwindSafe for InterruptRegister",1,["libnoentiendo::memory::mos652x::InterruptRegister"]],["impl UnwindSafe for NullMemory",1,["libnoentiendo::memory::null::NullMemory"]],["impl UnwindSafe for NullPort",1,["libnoentiendo::memory::ports::NullPort"]],["impl UnwindSafe for ActiveInterrupt",1,["libnoentiendo::memory::ActiveInterrupt"]],["impl UnwindSafe for SystemInfo",1,["libnoentiendo::memory::SystemInfo"]],["impl UnwindSafe for C64Keys",1,["libnoentiendo::keyboard::commodore::C64Keys"]],["impl UnwindSafe for C64KeyboardAdapter",1,["libnoentiendo::keyboard::commodore::C64KeyboardAdapter"]],["impl UnwindSafe for C64SymbolAdapter",1,["libnoentiendo::keyboard::commodore::C64SymbolAdapter"]],["impl UnwindSafe for C64VirtualAdapter",1,["libnoentiendo::keyboard::commodore::C64VirtualAdapter"]],["impl UnwindSafe for KeyPosition",1,["libnoentiendo::keyboard::positions::KeyPosition"]],["impl UnwindSafe for KeySymbol",1,["libnoentiendo::keyboard::symbols::KeySymbol"]],["impl UnwindSafe for SymbolAdapter",1,["libnoentiendo::keyboard::symbols::SymbolAdapter"]],["impl UnwindSafe for VirtualKey",1,["libnoentiendo::keyboard::virtualkey::VirtualKey"]],["impl<T> UnwindSafe for KeyState<T>where\n T: UnwindSafe,",1,["libnoentiendo::keyboard::KeyState"]],["impl UnwindSafe for KeyMappingStrategy",1,["libnoentiendo::keyboard::KeyMappingStrategy"]],["impl UnwindSafe for TextPlatform",1,["libnoentiendo::platform::text::TextPlatform"]],["impl UnwindSafe for TextPlatformProvider",1,["libnoentiendo::platform::text::TextPlatformProvider"]],["impl UnwindSafe for WinitPlatform",1,["libnoentiendo::platform::winit::WinitPlatform"]],["impl UnwindSafe for WinitPlatformProvider",1,["libnoentiendo::platform::winit::WinitPlatformProvider"]],["impl UnwindSafe for Color",1,["libnoentiendo::platform::Color"]],["impl UnwindSafe for JoystickState",1,["libnoentiendo::platform::JoystickState"]],["impl UnwindSafe for WindowConfig",1,["libnoentiendo::platform::WindowConfig"]],["impl UnwindSafe for RomFile",1,["libnoentiendo::roms::RomFile"]],["impl UnwindSafe for BasicSystemBuilder",1,["libnoentiendo::systems::basic::BasicSystemBuilder"]],["impl !UnwindSafe for BasicSystem",1,["libnoentiendo::systems::basic::BasicSystem"]],["impl UnwindSafe for C64SystemRoms",1,["libnoentiendo::systems::c64::roms::C64SystemRoms"]],["impl !UnwindSafe for C64BankSwitching",1,["libnoentiendo::systems::c64::C64BankSwitching"]],["impl UnwindSafe for C64SystemConfig",1,["libnoentiendo::systems::c64::C64SystemConfig"]],["impl UnwindSafe for C64SystemBuilder",1,["libnoentiendo::systems::c64::C64SystemBuilder"]],["impl !UnwindSafe for C64System",1,["libnoentiendo::systems::c64::C64System"]],["impl UnwindSafe for Easy6502SystemBuilder",1,["libnoentiendo::systems::easy::Easy6502SystemBuilder"]],["impl !UnwindSafe for Easy6502System",1,["libnoentiendo::systems::easy::Easy6502System"]],["impl UnwindSafe for KlausSystemBuilder",1,["libnoentiendo::systems::klaus::KlausSystemBuilder"]],["impl !UnwindSafe for KlausSystem",1,["libnoentiendo::systems::klaus::KlausSystem"]],["impl UnwindSafe for PetSystemRoms",1,["libnoentiendo::systems::pet::roms::PetSystemRoms"]],["impl UnwindSafe for PetKeys",1,["libnoentiendo::systems::pet::keyboard::PetKeys"]],["impl !UnwindSafe for PetPia1PortA",1,["libnoentiendo::systems::pet::PetPia1PortA"]],["impl !UnwindSafe for PetPia1PortB",1,["libnoentiendo::systems::pet::PetPia1PortB"]],["impl UnwindSafe for PetSystemConfig",1,["libnoentiendo::systems::pet::PetSystemConfig"]],["impl UnwindSafe for PetSystemBuilder",1,["libnoentiendo::systems::pet::PetSystemBuilder"]],["impl !UnwindSafe for PetSystem",1,["libnoentiendo::systems::pet::PetSystem"]],["impl UnwindSafe for Vic20SystemRoms",1,["libnoentiendo::systems::vic::Vic20SystemRoms"]],["impl !UnwindSafe for VicVia1PortA",1,["libnoentiendo::systems::vic::VicVia1PortA"]],["impl !UnwindSafe for VicVia2PortB",1,["libnoentiendo::systems::vic::VicVia2PortB"]],["impl !UnwindSafe for VicVia2PortA",1,["libnoentiendo::systems::vic::VicVia2PortA"]],["impl UnwindSafe for Vic20SystemConfig",1,["libnoentiendo::systems::vic::Vic20SystemConfig"]],["impl UnwindSafe for Vic20SystemBuilder",1,["libnoentiendo::systems::vic::Vic20SystemBuilder"]],["impl !UnwindSafe for Vic20System",1,["libnoentiendo::systems::vic::Vic20System"]]], +"noentiendo_desktop":[["impl UnwindSafe for SystemArg",1,["noentiendo_desktop::SystemArg"]],["impl UnwindSafe for PlatformArg",1,["noentiendo_desktop::PlatformArg"]],["impl UnwindSafe for KeyMappingArg",1,["noentiendo_desktop::KeyMappingArg"]],["impl UnwindSafe for Args",1,["noentiendo_desktop::Args"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/serde/de/trait.Deserialize.js b/doc/implementors/serde/de/trait.Deserialize.js index 1e6280db..7288e9ab 100644 --- a/doc/implementors/serde/de/trait.Deserialize.js +++ b/doc/implementors/serde/de/trait.Deserialize.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"libnoentiendo":[["impl<'de> Deserialize<'de> for VirtualKey"],["impl<'de> Deserialize<'de> for PetKeys"],["impl<'de> Deserialize<'de> for C64Keys"]] +"libnoentiendo":[["impl<'de> Deserialize<'de> for C64Keys"],["impl<'de> Deserialize<'de> for VirtualKey"],["impl<'de> Deserialize<'de> for PetKeys"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/serde/ser/trait.Serialize.js b/doc/implementors/serde/ser/trait.Serialize.js index 830f2f2b..f578c5fa 100644 --- a/doc/implementors/serde/ser/trait.Serialize.js +++ b/doc/implementors/serde/ser/trait.Serialize.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"libnoentiendo":[["impl Serialize for VirtualKey"],["impl Serialize for PetKeys"],["impl Serialize for C64Keys"]] +"libnoentiendo":[["impl Serialize for VirtualKey"],["impl Serialize for C64Keys"],["impl Serialize for PetKeys"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/libnoentiendo/all.html b/doc/libnoentiendo/all.html index 7e68da60..f2c49e78 100644 --- a/doc/libnoentiendo/all.html +++ b/doc/libnoentiendo/all.html @@ -1 +1 @@ -List of all items in this crate

List of all items

Structs

Enums

Traits

\ No newline at end of file +List of all items in this crate

List of all items

Structs

Enums

Traits

\ No newline at end of file diff --git a/doc/libnoentiendo/cpu/index.html b/doc/libnoentiendo/cpu/index.html index 01af64b5..caf2c9a7 100644 --- a/doc/libnoentiendo/cpu/index.html +++ b/doc/libnoentiendo/cpu/index.html @@ -1,3 +1,3 @@ -libnoentiendo::cpu - Rust

Module libnoentiendo::cpu

source ·
Expand description

The cpu::Mos6502 represents a 6502 processor and associated memory.

+libnoentiendo::cpu - Rust

Module libnoentiendo::cpu

source ·
Expand description

The cpu::Mos6502 represents a 6502 processor and associated memory.

Structs

  • The MOS 6502 CPU and its associated memory.

Traits

  • Handle interrupts by setting the applicable flags, pushing the program counter -onto the stack, and loading the interrupt vector into the program counter.
  • Read and write from the system’s memory.
  • Push and pop values from the stack.
\ No newline at end of file +onto the stack, and loading the interrupt vector into the program counter.
  • Read and write from the system’s memory.
  • Push and pop values from the stack.
  • \ No newline at end of file diff --git a/doc/libnoentiendo/cpu/struct.Mos6502.html b/doc/libnoentiendo/cpu/struct.Mos6502.html index 315a4a13..39e9e49e 100644 --- a/doc/libnoentiendo/cpu/struct.Mos6502.html +++ b/doc/libnoentiendo/cpu/struct.Mos6502.html @@ -1,19 +1,19 @@ -Mos6502 in libnoentiendo::cpu - Rust

    Struct libnoentiendo::cpu::Mos6502

    source ·
    pub struct Mos6502 {
    +Mos6502 in libnoentiendo::cpu - Rust

    Struct libnoentiendo::cpu::Mos6502

    source ·
    pub struct Mos6502 {
         pub registers: Registers,
    -    pub memory: Box<dyn Memory>,
    +    pub memory: Box<dyn Memory>,
         /* private fields */
     }
    Expand description

    The MOS 6502 CPU and its associated memory.

    -

    Fields§

    §registers: Registers§memory: Box<dyn Memory>

    Implementations§

    source§

    impl Mos6502

    source

    pub fn new(memory: Box<dyn Memory>) -> Mos6502

    source

    pub fn reset(&mut self)

    source

    pub fn get_info(&self) -> SystemInfo

    Return a SystemInfo struct containing the current system status.

    -
    source

    pub fn tick(&mut self) -> u8

    Execute a single instruction.

    -

    Trait Implementations§

    source§

    impl InterruptHandler for Mos6502

    source§

    fn interrupt(&mut self, maskable: bool, break_instr: bool)

    source§

    impl MemoryIO for Mos6502

    source§

    fn read(&mut self, address: u16) -> u8

    Read a byte from the given address in memory.
    source§

    fn read_word(&mut self, address: u16) -> u16

    Read a word (little-endian) from the given address in memory.
    source§

    fn write(&mut self, address: u16, value: u8)

    Write a byte to the given address in memory.
    source§

    fn write_word(&mut self, address: u16, value: u16)

    Write a word (little-endian) to the given address in memory.
    source§

    impl Stack for Mos6502

    source§

    fn push(&mut self, value: u8)

    Push a byte onto the stack.
    source§

    fn pop(&mut self) -> u8

    Pop a byte from the stack.
    source§

    fn push_word(&mut self, value: u16)

    Push a word (little-endian) onto the stack.
    source§

    fn pop_word(&mut self) -> u16

    Pop a word (little-endian) from the stack.

    Auto Trait Implementations§

    §

    impl !RefUnwindSafe for Mos6502

    §

    impl !Send for Mos6502

    §

    impl !Sync for Mos6502

    §

    impl Unpin for Mos6502

    §

    impl !UnwindSafe for Mos6502

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §registers: Registers§memory: Box<dyn Memory>

    Implementations§

    source§

    impl Mos6502

    source

    pub fn new(memory: Box<dyn Memory>) -> Mos6502

    source

    pub fn reset(&mut self)

    source

    pub fn get_info(&self) -> SystemInfo

    Return a SystemInfo struct containing the current system status.

    +
    source

    pub fn tick(&mut self) -> u8

    Execute a single instruction.

    +

    Trait Implementations§

    source§

    impl InterruptHandler for Mos6502

    source§

    fn interrupt(&mut self, maskable: bool, break_instr: bool)

    source§

    impl MemoryIO for Mos6502

    source§

    fn read(&mut self, address: u16) -> u8

    Read a byte from the given address in memory.
    source§

    fn read_word(&mut self, address: u16) -> u16

    Read a word (little-endian) from the given address in memory.
    source§

    fn write(&mut self, address: u16, value: u8)

    Write a byte to the given address in memory.
    source§

    fn write_word(&mut self, address: u16, value: u16)

    Write a word (little-endian) to the given address in memory.
    source§

    impl Stack for Mos6502

    source§

    fn push(&mut self, value: u8)

    Push a byte onto the stack.
    source§

    fn pop(&mut self) -> u8

    Pop a byte from the stack.
    source§

    fn push_word(&mut self, value: u16)

    Push a word (little-endian) onto the stack.
    source§

    fn pop_word(&mut self) -> u16

    Pop a word (little-endian) from the stack.

    Auto Trait Implementations§

    §

    impl !RefUnwindSafe for Mos6502

    §

    impl !Send for Mos6502

    §

    impl !Sync for Mos6502

    §

    impl Unpin for Mos6502

    §

    impl !UnwindSafe for Mos6502

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/cpu/trait.InterruptHandler.html b/doc/libnoentiendo/cpu/trait.InterruptHandler.html index ce89663c..f3cfce9c 100644 --- a/doc/libnoentiendo/cpu/trait.InterruptHandler.html +++ b/doc/libnoentiendo/cpu/trait.InterruptHandler.html @@ -1,6 +1,6 @@ -InterruptHandler in libnoentiendo::cpu - Rust
    pub trait InterruptHandler {
    +InterruptHandler in libnoentiendo::cpu - Rust
    pub trait InterruptHandler {
         // Required method
    -    fn interrupt(&mut self, maskable: bool, set_brk: bool);
    +    fn interrupt(&mut self, maskable: bool, set_brk: bool);
     }
    Expand description

    Handle interrupts by setting the applicable flags, pushing the program counter onto the stack, and loading the interrupt vector into the program counter.

    -

    Required Methods§

    source

    fn interrupt(&mut self, maskable: bool, set_brk: bool)

    Implementors§

    \ No newline at end of file +

    Required Methods§

    source

    fn interrupt(&mut self, maskable: bool, set_brk: bool)

    Implementors§

    \ No newline at end of file diff --git a/doc/libnoentiendo/cpu/trait.MemoryIO.html b/doc/libnoentiendo/cpu/trait.MemoryIO.html index 8860fbbb..01bcd23e 100644 --- a/doc/libnoentiendo/cpu/trait.MemoryIO.html +++ b/doc/libnoentiendo/cpu/trait.MemoryIO.html @@ -1,12 +1,12 @@ -MemoryIO in libnoentiendo::cpu - Rust
    pub trait MemoryIO {
    +MemoryIO in libnoentiendo::cpu - Rust
    pub trait MemoryIO {
         // Required methods
    -    fn read(&mut self, address: u16) -> u8;
    -    fn write(&mut self, address: u16, value: u8);
    -    fn read_word(&mut self, address: u16) -> u16;
    -    fn write_word(&mut self, address: u16, value: u16);
    +    fn read(&mut self, address: u16) -> u8;
    +    fn write(&mut self, address: u16, value: u8);
    +    fn read_word(&mut self, address: u16) -> u16;
    +    fn write_word(&mut self, address: u16, value: u16);
     }
    Expand description

    Read and write from the system’s memory.

    -

    Required Methods§

    source

    fn read(&mut self, address: u16) -> u8

    Read a byte from the given address in memory.

    -
    source

    fn write(&mut self, address: u16, value: u8)

    Write a byte to the given address in memory.

    -
    source

    fn read_word(&mut self, address: u16) -> u16

    Read a word (little-endian) from the given address in memory.

    -
    source

    fn write_word(&mut self, address: u16, value: u16)

    Write a word (little-endian) to the given address in memory.

    -

    Implementors§

    \ No newline at end of file +

    Required Methods§

    source

    fn read(&mut self, address: u16) -> u8

    Read a byte from the given address in memory.

    +
    source

    fn write(&mut self, address: u16, value: u8)

    Write a byte to the given address in memory.

    +
    source

    fn read_word(&mut self, address: u16) -> u16

    Read a word (little-endian) from the given address in memory.

    +
    source

    fn write_word(&mut self, address: u16, value: u16)

    Write a word (little-endian) to the given address in memory.

    +

    Implementors§

    \ No newline at end of file diff --git a/doc/libnoentiendo/cpu/trait.Stack.html b/doc/libnoentiendo/cpu/trait.Stack.html index 04e9bed8..e1acf2df 100644 --- a/doc/libnoentiendo/cpu/trait.Stack.html +++ b/doc/libnoentiendo/cpu/trait.Stack.html @@ -1,12 +1,12 @@ -Stack in libnoentiendo::cpu - Rust

    Trait libnoentiendo::cpu::Stack

    source ·
    pub trait Stack {
    +Stack in libnoentiendo::cpu - Rust

    Trait libnoentiendo::cpu::Stack

    source ·
    pub trait Stack {
         // Required methods
    -    fn push(&mut self, value: u8);
    -    fn pop(&mut self) -> u8;
    -    fn push_word(&mut self, value: u16);
    -    fn pop_word(&mut self) -> u16;
    +    fn push(&mut self, value: u8);
    +    fn pop(&mut self) -> u8;
    +    fn push_word(&mut self, value: u16);
    +    fn pop_word(&mut self) -> u16;
     }
    Expand description

    Push and pop values from the stack.

    -

    Required Methods§

    source

    fn push(&mut self, value: u8)

    Push a byte onto the stack.

    -
    source

    fn pop(&mut self) -> u8

    Pop a byte from the stack.

    -
    source

    fn push_word(&mut self, value: u16)

    Push a word (little-endian) onto the stack.

    -
    source

    fn pop_word(&mut self) -> u16

    Pop a word (little-endian) from the stack.

    -

    Implementors§

    \ No newline at end of file +

    Required Methods§

    source

    fn push(&mut self, value: u8)

    Push a byte onto the stack.

    +
    source

    fn pop(&mut self) -> u8

    Pop a byte from the stack.

    +
    source

    fn push_word(&mut self, value: u16)

    Push a word (little-endian) onto the stack.

    +
    source

    fn pop_word(&mut self) -> u16

    Pop a word (little-endian) from the stack.

    +

    Implementors§

    \ No newline at end of file diff --git a/doc/libnoentiendo/index.html b/doc/libnoentiendo/index.html index f91de76a..43a66119 100644 --- a/doc/libnoentiendo/index.html +++ b/doc/libnoentiendo/index.html @@ -1,4 +1,4 @@ -libnoentiendo - Rust

    Crate libnoentiendo

    source ·
    Expand description

    noentiendo

    +libnoentiendo - Rust

    Crate libnoentiendo

    source ·
    Expand description

    noentiendo

    codecov github actions GitHub last commit @@ -46,4 +46,4 @@

    License

    For full details, consult LICENSE.txt.

    Note that some files in this repo, such as provided ROMs, are licensed under their own terms.

    Modules

    • The cpu::Mos6502 represents a 6502 processor and associated memory.
    • Various representations of keyboard scancodes are required in different parts of the codebase. Each platform typically has its own definition of a scancode (e.g. JavaScript’s event.code or Winit’s VirtualKeyCode), and each emulated system has a different set of keys (e.g. the Commodore key on the VIC-20 or the standalone " key on the PET).
    • A memory::Memory implementation can be read from and written to, but it can also be polled for interrupts. This is used for the PIA, VIA, and other chips that interface over memory but also trigger interrupts. The memory module provides implementations for various types of memory and other memory-mapped devices. Mappings are handled using memory::BranchMemory.
    • A platform::Platform consumes a system and runs it. Platforms provide access to the video output, keyboard input, system random number generator, and other details via a platform::PlatformProvider. Some platforms run synchronously (taking over the thread) while others run asynchronously with the help of an event loop (such as when compiling to WASM). Platforms are defined in the platform module. -Currently, available platforms include TextPlatform for simple headless text-based operation, WinitPlatform for a graphical window on a desktop environment, and CanvasPlatform for drawing to a <canvas> element on the web. In the future, platforms for mobile apps are planned, in addition to a platform for running on a microcontroller (e.g. the RP2040).
    • ROM file loading and unloading is different on different platforms: desktop platforms typically load ROMs from a file, while WebAssembly platforms need to load ROMs from a Uint8Array. ROM file definition and loading is handled in the roms module, with specific roms::DiskLoadable and roms::JsValueLoadable traits for these two cases. Loaded ROMs are represented with a roms::RomFile object, which can be passed to memory::BlockMemory::from_file.
    • Systems are created by a systems::SystemBuilder. A system is created with some roms, configuration, and platform. For instance, the build implementation on systems::pet::PetSystemBuilder takes in systems::pet::PetSystemRoms, systems::pet::PetSystemConfig, and an Arc<dyn PlatformProvider>.
    \ No newline at end of file +Currently, available platforms include TextPlatform for simple headless text-based operation, WinitPlatform for a graphical window on a desktop environment, and CanvasPlatform for drawing to a <canvas> element on the web. In the future, platforms for mobile apps are planned, in addition to a platform for running on a microcontroller (e.g. the RP2040).
  • ROM file loading and unloading is different on different platforms: desktop platforms typically load ROMs from a file, while WebAssembly platforms need to load ROMs from a Uint8Array. ROM file definition and loading is handled in the roms module, with specific roms::DiskLoadable and roms::JsValueLoadable traits for these two cases. Loaded ROMs are represented with a roms::RomFile object, which can be passed to memory::BlockMemory::from_file.
  • Systems are created by a systems::SystemBuilder. A system is created with some roms, configuration, and platform. For instance, the build implementation on systems::pet::PetSystemBuilder takes in systems::pet::PetSystemRoms, systems::pet::PetSystemConfig, and an Arc<dyn PlatformProvider>.
  • \ No newline at end of file diff --git a/doc/libnoentiendo/keyboard/commodore/enum.C64Keys.html b/doc/libnoentiendo/keyboard/commodore/enum.C64Keys.html index c0effa05..d1e4d646 100644 --- a/doc/libnoentiendo/keyboard/commodore/enum.C64Keys.html +++ b/doc/libnoentiendo/keyboard/commodore/enum.C64Keys.html @@ -1,4 +1,4 @@ -C64Keys in libnoentiendo::keyboard::commodore - Rust
    pub enum C64Keys {
    +C64Keys in libnoentiendo::keyboard::commodore - Rust
    pub enum C64Keys {
     
    Show 66 variants LeftArrow, Digit1, Digit2, @@ -66,31 +66,31 @@ F5, F7,
    }
    Expand description

    Keys found on a VIC-20 or Commodore 64 keyboard.

    -

    Variants§

    §

    LeftArrow

    §

    Digit1

    §

    Digit2

    §

    Digit3

    §

    Digit4

    §

    Digit5

    §

    Digit6

    §

    Digit7

    §

    Digit8

    §

    Digit9

    §

    Digit0

    §

    Plus

    §

    Minus

    §

    Pound

    §

    ClrHome

    §

    InsertDelete

    §

    Control

    §

    Q

    §

    W

    §

    E

    §

    R

    §

    T

    §

    Y

    §

    U

    §

    I

    §

    O

    §

    P

    §

    At

    §

    Asterisk

    §

    UpArrow

    §

    Restore

    §

    RunStop

    §

    ShiftLock

    §

    A

    §

    S

    §

    D

    §

    F

    §

    G

    §

    H

    §

    J

    §

    K

    §

    L

    §

    Colon

    §

    Semicolon

    §

    Equals

    §

    Return

    §

    Commodore

    §

    LShift

    §

    Z

    §

    X

    §

    C

    §

    V

    §

    B

    §

    N

    §

    M

    §

    Comma

    §

    Period

    §

    Slash

    §

    RShift

    §

    CursorUpDown

    §

    CursorLeftRight

    §

    Space

    §

    F1

    §

    F3

    §

    F5

    §

    F7

    Trait Implementations§

    source§

    impl Clone for C64Keys

    source§

    fn clone(&self) -> C64Keys

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for C64Keys

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for C64Keys

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where - __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Hash for C64Keys

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl KeyAdapter<KeyPosition, C64Keys> for C64KeyboardAdapter

    source§

    fn map(state: &KeyState<KeyPosition>) -> KeyState<C64Keys>

    Map the current state of the keyboard with symbols of type F to an -equivalent keyboard state with symbols of type T.
    source§

    impl KeyAdapter<KeySymbol, C64Keys> for C64SymbolAdapter

    source§

    fn map(state: &KeyState<KeySymbol>) -> KeyState<C64Keys>

    Map the current state of the keyboard with symbols of type F to an -equivalent keyboard state with symbols of type T.
    source§

    impl KeyAdapter<VirtualKey, C64Keys> for C64VirtualAdapter

    source§

    fn map(state: &KeyState<VirtualKey>) -> KeyState<C64Keys>

    Map the current state of the keyboard with symbols of type F to an -equivalent keyboard state with symbols of type T.
    source§

    impl PartialEq<C64Keys> for C64Keys

    source§

    fn eq(&self, other: &C64Keys) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for C64Keys

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where - __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Copy for C64Keys

    source§

    impl Eq for C64Keys

    source§

    impl StructuralEq for C64Keys

    source§

    impl StructuralPartialEq for C64Keys

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> CallHasher for Twhere - T: Hash + ?Sized,

    §

    fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64where - H: Hash + ?Sized, - B: BuildHasher,

    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    §

    LeftArrow

    §

    Digit1

    §

    Digit2

    §

    Digit3

    §

    Digit4

    §

    Digit5

    §

    Digit6

    §

    Digit7

    §

    Digit8

    §

    Digit9

    §

    Digit0

    §

    Plus

    §

    Minus

    §

    Pound

    §

    ClrHome

    §

    InsertDelete

    §

    Control

    §

    Q

    §

    W

    §

    E

    §

    R

    §

    T

    §

    Y

    §

    U

    §

    I

    §

    O

    §

    P

    §

    At

    §

    Asterisk

    §

    UpArrow

    §

    Restore

    §

    RunStop

    §

    ShiftLock

    §

    A

    §

    S

    §

    D

    §

    F

    §

    G

    §

    H

    §

    J

    §

    K

    §

    L

    §

    Colon

    §

    Semicolon

    §

    Equals

    §

    Return

    §

    Commodore

    §

    LShift

    §

    Z

    §

    X

    §

    C

    §

    V

    §

    B

    §

    N

    §

    M

    §

    Comma

    §

    Period

    §

    Slash

    §

    RShift

    §

    CursorUpDown

    §

    CursorLeftRight

    §

    Space

    §

    F1

    §

    F3

    §

    F5

    §

    F7

    Trait Implementations§

    source§

    impl Clone for C64Keys

    source§

    fn clone(&self) -> C64Keys

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for C64Keys

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for C64Keys

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Hash for C64Keys

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl KeyAdapter<KeyPosition, C64Keys> for C64KeyboardAdapter

    source§

    fn map(state: &KeyState<KeyPosition>) -> KeyState<C64Keys>

    Map the current state of the keyboard with symbols of type F to an +equivalent keyboard state with symbols of type T.
    source§

    impl KeyAdapter<KeySymbol, C64Keys> for C64SymbolAdapter

    source§

    fn map(state: &KeyState<KeySymbol>) -> KeyState<C64Keys>

    Map the current state of the keyboard with symbols of type F to an +equivalent keyboard state with symbols of type T.
    source§

    impl KeyAdapter<VirtualKey, C64Keys> for C64VirtualAdapter

    source§

    fn map(state: &KeyState<VirtualKey>) -> KeyState<C64Keys>

    Map the current state of the keyboard with symbols of type F to an +equivalent keyboard state with symbols of type T.
    source§

    impl PartialEq<C64Keys> for C64Keys

    source§

    fn eq(&self, other: &C64Keys) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for C64Keys

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Copy for C64Keys

    source§

    impl Eq for C64Keys

    source§

    impl StructuralEq for C64Keys

    source§

    impl StructuralPartialEq for C64Keys

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> CallHasher for Twhere + T: Hash + ?Sized,

    §

    fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64where + H: Hash + ?Sized, + B: BuildHasher,

    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for Twhere - T: for<'de> Deserialize<'de>,

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for Twhere + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/doc/libnoentiendo/keyboard/commodore/index.html b/doc/libnoentiendo/keyboard/commodore/index.html index 63d92ef4..b1d99329 100644 --- a/doc/libnoentiendo/keyboard/commodore/index.html +++ b/doc/libnoentiendo/keyboard/commodore/index.html @@ -1,2 +1,2 @@ -libnoentiendo::keyboard::commodore - Rust
    Expand description

    Keys and adapters for the Commodore 64, VIC-20, and other Commodore machines.

    -

    Structs

    Enums

    • Keys found on a VIC-20 or Commodore 64 keyboard.
    \ No newline at end of file +libnoentiendo::keyboard::commodore - Rust
    Expand description

    Keys and adapters for the Commodore 64, VIC-20, and other Commodore machines.

    +

    Structs

    Enums

    • Keys found on a VIC-20 or Commodore 64 keyboard.
    \ No newline at end of file diff --git a/doc/libnoentiendo/keyboard/commodore/struct.C64KeyboardAdapter.html b/doc/libnoentiendo/keyboard/commodore/struct.C64KeyboardAdapter.html index 15710598..9e6ae2b1 100644 --- a/doc/libnoentiendo/keyboard/commodore/struct.C64KeyboardAdapter.html +++ b/doc/libnoentiendo/keyboard/commodore/struct.C64KeyboardAdapter.html @@ -1,14 +1,14 @@ -C64KeyboardAdapter in libnoentiendo::keyboard::commodore - Rust
    pub struct C64KeyboardAdapter;
    Expand description

    An adapter for mapping positions on a standard keyboard to keys on a VIC-20 or Commodore 64.

    -

    Trait Implementations§

    source§

    impl KeyAdapter<KeyPosition, C64Keys> for C64KeyboardAdapter

    source§

    fn map(state: &KeyState<KeyPosition>) -> KeyState<C64Keys>

    Map the current state of the keyboard with symbols of type F to an -equivalent keyboard state with symbols of type T.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +C64KeyboardAdapter in libnoentiendo::keyboard::commodore - Rust
    pub struct C64KeyboardAdapter;
    Expand description

    An adapter for mapping positions on a standard keyboard to keys on a VIC-20 or Commodore 64.

    +

    Trait Implementations§

    source§

    impl KeyAdapter<KeyPosition, C64Keys> for C64KeyboardAdapter

    source§

    fn map(state: &KeyState<KeyPosition>) -> KeyState<C64Keys>

    Map the current state of the keyboard with symbols of type F to an +equivalent keyboard state with symbols of type T.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/keyboard/commodore/struct.C64SymbolAdapter.html b/doc/libnoentiendo/keyboard/commodore/struct.C64SymbolAdapter.html index 022732dd..3159a2b0 100644 --- a/doc/libnoentiendo/keyboard/commodore/struct.C64SymbolAdapter.html +++ b/doc/libnoentiendo/keyboard/commodore/struct.C64SymbolAdapter.html @@ -1,14 +1,14 @@ -C64SymbolAdapter in libnoentiendo::keyboard::commodore - Rust
    pub struct C64SymbolAdapter;
    Expand description

    An adapter for mapping symbols pressed on a standard keyboard to keys pressed on a Commodore 64.

    -

    Trait Implementations§

    source§

    impl KeyAdapter<KeySymbol, C64Keys> for C64SymbolAdapter

    source§

    fn map(state: &KeyState<KeySymbol>) -> KeyState<C64Keys>

    Map the current state of the keyboard with symbols of type F to an -equivalent keyboard state with symbols of type T.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +C64SymbolAdapter in libnoentiendo::keyboard::commodore - Rust
    pub struct C64SymbolAdapter;
    Expand description

    An adapter for mapping symbols pressed on a standard keyboard to keys pressed on a Commodore 64.

    +

    Trait Implementations§

    source§

    impl KeyAdapter<KeySymbol, C64Keys> for C64SymbolAdapter

    source§

    fn map(state: &KeyState<KeySymbol>) -> KeyState<C64Keys>

    Map the current state of the keyboard with symbols of type F to an +equivalent keyboard state with symbols of type T.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/keyboard/commodore/struct.C64VirtualAdapter.html b/doc/libnoentiendo/keyboard/commodore/struct.C64VirtualAdapter.html index 7ad99560..8f43b0df 100644 --- a/doc/libnoentiendo/keyboard/commodore/struct.C64VirtualAdapter.html +++ b/doc/libnoentiendo/keyboard/commodore/struct.C64VirtualAdapter.html @@ -1,13 +1,13 @@ -C64VirtualAdapter in libnoentiendo::keyboard::commodore - Rust
    pub struct C64VirtualAdapter;

    Trait Implementations§

    source§

    impl KeyAdapter<VirtualKey, C64Keys> for C64VirtualAdapter

    source§

    fn map(state: &KeyState<VirtualKey>) -> KeyState<C64Keys>

    Map the current state of the keyboard with symbols of type F to an -equivalent keyboard state with symbols of type T.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +C64VirtualAdapter in libnoentiendo::keyboard::commodore - Rust
    pub struct C64VirtualAdapter;

    Trait Implementations§

    source§

    impl KeyAdapter<VirtualKey, C64Keys> for C64VirtualAdapter

    source§

    fn map(state: &KeyState<VirtualKey>) -> KeyState<C64Keys>

    Map the current state of the keyboard with symbols of type F to an +equivalent keyboard state with symbols of type T.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/keyboard/enum.KeyMappingStrategy.html b/doc/libnoentiendo/keyboard/enum.KeyMappingStrategy.html index e7496e15..1106b1ea 100644 --- a/doc/libnoentiendo/keyboard/enum.KeyMappingStrategy.html +++ b/doc/libnoentiendo/keyboard/enum.KeyMappingStrategy.html @@ -1,4 +1,4 @@ -KeyMappingStrategy in libnoentiendo::keyboard - Rust
    pub enum KeyMappingStrategy {
    +KeyMappingStrategy in libnoentiendo::keyboard - Rust
    pub enum KeyMappingStrategy {
         Physical,
         Symbolic,
     }
    Expand description

    Represents different approaches to mapping key states, to allow the user to @@ -9,15 +9,15 @@

    §

    Symbolic

    Preserve symbols one-to-one. This is more intuitive, but may cause issues with some software. This approach will rewrite the state of the modifier keys to convey the symbols being pressed.

    -

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/keyboard/enum.KeyPosition.html b/doc/libnoentiendo/keyboard/enum.KeyPosition.html index d0e83f1c..ed2e251f 100644 --- a/doc/libnoentiendo/keyboard/enum.KeyPosition.html +++ b/doc/libnoentiendo/keyboard/enum.KeyPosition.html @@ -1,4 +1,4 @@ -KeyPosition in libnoentiendo::keyboard - Rust
    pub enum KeyPosition {
    +KeyPosition in libnoentiendo::keyboard - Rust
    pub enum KeyPosition {
     
    Show 104 variants Escape, F1, F2, @@ -105,27 +105,27 @@ NumPeriod,
    }
    Expand description

    A representation for a position on a modern keyboard. Source: https://en.wikipedia.org/wiki/Keyboard_layout#/media/File:Qwerty.svg

    -

    Variants§

    §

    Escape

    §

    F1

    §

    F2

    §

    F3

    §

    F4

    §

    F5

    §

    F6

    §

    F7

    §

    F8

    §

    F9

    §

    F10

    §

    F11

    §

    F12

    §

    PrintScreen

    §

    ScrollLock

    §

    Pause

    §

    Grave

    §

    Digit1

    §

    Digit2

    §

    Digit3

    §

    Digit4

    §

    Digit5

    §

    Digit6

    §

    Digit7

    §

    Digit8

    §

    Digit9

    §

    Digit0

    §

    Minus

    §

    Equals

    §

    Backspace

    §

    Insert

    §

    Home

    §

    PageUp

    §

    NumLock

    §

    NumDivide

    §

    NumMultiply

    §

    NumMinus

    §

    Tab

    §

    Q

    §

    W

    §

    E

    §

    R

    §

    T

    §

    Y

    §

    U

    §

    I

    §

    O

    §

    P

    §

    LeftBracket

    §

    RightBracket

    §

    Backslash

    §

    Delete

    §

    End

    §

    PageDown

    §

    Num7

    §

    Num8

    §

    Num9

    §

    NumPlus

    §

    CapsLock

    §

    A

    §

    S

    §

    D

    §

    F

    §

    G

    §

    H

    §

    J

    §

    K

    §

    L

    §

    Semicolon

    §

    Apostrophe

    §

    Enter

    §

    Num4

    §

    Num5

    §

    Num6

    §

    LShift

    §

    Z

    §

    X

    §

    C

    §

    V

    §

    B

    §

    N

    §

    M

    §

    Comma

    §

    Period

    §

    Slash

    §

    RShift

    §

    UpArrow

    §

    Num1

    §

    Num2

    §

    Num3

    §

    NumEnter

    §

    LControl

    §

    LSuper

    §

    LAlt

    §

    Space

    §

    RAlt

    §

    RSuper

    §

    Menu

    §

    RControl

    §

    LeftArrow

    §

    DownArrow

    §

    RightArrow

    §

    Num0

    §

    NumPeriod

    Trait Implementations§

    source§

    impl Clone for KeyPosition

    source§

    fn clone(&self) -> KeyPosition

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for KeyPosition

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for KeyPosition

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl KeyAdapter<KeyPosition, C64Keys> for C64KeyboardAdapter

    source§

    fn map(state: &KeyState<KeyPosition>) -> KeyState<C64Keys>

    Map the current state of the keyboard with symbols of type F to an -equivalent keyboard state with symbols of type T.
    source§

    impl KeyAdapter<KeyPosition, KeySymbol> for SymbolAdapter

    source§

    fn map(state: &KeyState<KeyPosition>) -> KeyState<KeySymbol>

    Map the current state of the keyboard with symbols of type F to an -equivalent keyboard state with symbols of type T.
    source§

    impl PartialEq<KeyPosition> for KeyPosition

    source§

    fn eq(&self, other: &KeyPosition) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for KeyPosition

    source§

    impl Eq for KeyPosition

    source§

    impl StructuralEq for KeyPosition

    source§

    impl StructuralPartialEq for KeyPosition

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> CallHasher for Twhere - T: Hash + ?Sized,

    §

    fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64where - H: Hash + ?Sized, - B: BuildHasher,

    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    §

    Escape

    §

    F1

    §

    F2

    §

    F3

    §

    F4

    §

    F5

    §

    F6

    §

    F7

    §

    F8

    §

    F9

    §

    F10

    §

    F11

    §

    F12

    §

    PrintScreen

    §

    ScrollLock

    §

    Pause

    §

    Grave

    §

    Digit1

    §

    Digit2

    §

    Digit3

    §

    Digit4

    §

    Digit5

    §

    Digit6

    §

    Digit7

    §

    Digit8

    §

    Digit9

    §

    Digit0

    §

    Minus

    §

    Equals

    §

    Backspace

    §

    Insert

    §

    Home

    §

    PageUp

    §

    NumLock

    §

    NumDivide

    §

    NumMultiply

    §

    NumMinus

    §

    Tab

    §

    Q

    §

    W

    §

    E

    §

    R

    §

    T

    §

    Y

    §

    U

    §

    I

    §

    O

    §

    P

    §

    LeftBracket

    §

    RightBracket

    §

    Backslash

    §

    Delete

    §

    End

    §

    PageDown

    §

    Num7

    §

    Num8

    §

    Num9

    §

    NumPlus

    §

    CapsLock

    §

    A

    §

    S

    §

    D

    §

    F

    §

    G

    §

    H

    §

    J

    §

    K

    §

    L

    §

    Semicolon

    §

    Apostrophe

    §

    Enter

    §

    Num4

    §

    Num5

    §

    Num6

    §

    LShift

    §

    Z

    §

    X

    §

    C

    §

    V

    §

    B

    §

    N

    §

    M

    §

    Comma

    §

    Period

    §

    Slash

    §

    RShift

    §

    UpArrow

    §

    Num1

    §

    Num2

    §

    Num3

    §

    NumEnter

    §

    LControl

    §

    LSuper

    §

    LAlt

    §

    Space

    §

    RAlt

    §

    RSuper

    §

    Menu

    §

    RControl

    §

    LeftArrow

    §

    DownArrow

    §

    RightArrow

    §

    Num0

    §

    NumPeriod

    Trait Implementations§

    source§

    impl Clone for KeyPosition

    source§

    fn clone(&self) -> KeyPosition

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for KeyPosition

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for KeyPosition

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl KeyAdapter<KeyPosition, C64Keys> for C64KeyboardAdapter

    source§

    fn map(state: &KeyState<KeyPosition>) -> KeyState<C64Keys>

    Map the current state of the keyboard with symbols of type F to an +equivalent keyboard state with symbols of type T.
    source§

    impl KeyAdapter<KeyPosition, KeySymbol> for SymbolAdapter

    source§

    fn map(state: &KeyState<KeyPosition>) -> KeyState<KeySymbol>

    Map the current state of the keyboard with symbols of type F to an +equivalent keyboard state with symbols of type T.
    source§

    impl PartialEq<KeyPosition> for KeyPosition

    source§

    fn eq(&self, other: &KeyPosition) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for KeyPosition

    source§

    impl Eq for KeyPosition

    source§

    impl StructuralEq for KeyPosition

    source§

    impl StructuralPartialEq for KeyPosition

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> CallHasher for Twhere + T: Hash + ?Sized,

    §

    fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64where + H: Hash + ?Sized, + B: BuildHasher,

    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/keyboard/enum.KeySymbol.html b/doc/libnoentiendo/keyboard/enum.KeySymbol.html index ee0a9cfc..342c4572 100644 --- a/doc/libnoentiendo/keyboard/enum.KeySymbol.html +++ b/doc/libnoentiendo/keyboard/enum.KeySymbol.html @@ -1,5 +1,5 @@ -KeySymbol in libnoentiendo::keyboard - Rust
    pub enum KeySymbol {
    -
    Show 41 variants Char(char), +KeySymbol in libnoentiendo::keyboard - Rust
    pub enum KeySymbol {
    +
    Show 41 variants Char(char), Return, Backspace, Delete, @@ -41,28 +41,28 @@ F12, Interrupt,
    }
    Expand description

    A representation for a symbol on a modern keyboard.

    -

    Variants§

    §

    Char(char)

    Alphanumeric or symbol keys

    -
    §

    Return

    §

    Backspace

    §

    Delete

    §

    Escape

    §

    PrintScreen

    §

    ScrollLock

    §

    Pause

    §

    Insert

    §

    Home

    §

    PageUp

    §

    PageDown

    §

    End

    §

    NumLock

    §

    CapsLock

    §

    LShift

    §

    RShift

    §

    LSuper

    §

    RSuper

    §

    LAlt

    §

    RAlt

    §

    LControl

    §

    RControl

    §

    Menu

    §

    LeftArrow

    §

    RightArrow

    §

    UpArrow

    §

    DownArrow

    §

    F1

    §

    F2

    §

    F3

    §

    F4

    §

    F5

    §

    F6

    §

    F7

    §

    F8

    §

    F9

    §

    F10

    §

    F11

    §

    F12

    §

    Interrupt

    Trait Implementations§

    source§

    impl Clone for KeySymbol

    source§

    fn clone(&self) -> KeySymbol

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for KeySymbol

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for KeySymbol

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl KeyAdapter<KeyPosition, KeySymbol> for SymbolAdapter

    source§

    fn map(state: &KeyState<KeyPosition>) -> KeyState<KeySymbol>

    Map the current state of the keyboard with symbols of type F to an -equivalent keyboard state with symbols of type T.
    source§

    impl KeyAdapter<KeySymbol, C64Keys> for C64SymbolAdapter

    source§

    fn map(state: &KeyState<KeySymbol>) -> KeyState<C64Keys>

    Map the current state of the keyboard with symbols of type F to an -equivalent keyboard state with symbols of type T.
    source§

    impl PartialEq<KeySymbol> for KeySymbol

    source§

    fn eq(&self, other: &KeySymbol) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for KeySymbol

    source§

    impl Eq for KeySymbol

    source§

    impl StructuralEq for KeySymbol

    source§

    impl StructuralPartialEq for KeySymbol

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> CallHasher for Twhere - T: Hash + ?Sized,

    §

    fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64where - H: Hash + ?Sized, - B: BuildHasher,

    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    §

    Char(char)

    Alphanumeric or symbol keys

    +
    §

    Return

    §

    Backspace

    §

    Delete

    §

    Escape

    §

    PrintScreen

    §

    ScrollLock

    §

    Pause

    §

    Insert

    §

    Home

    §

    PageUp

    §

    PageDown

    §

    End

    §

    NumLock

    §

    CapsLock

    §

    LShift

    §

    RShift

    §

    LSuper

    §

    RSuper

    §

    LAlt

    §

    RAlt

    §

    LControl

    §

    RControl

    §

    Menu

    §

    LeftArrow

    §

    RightArrow

    §

    UpArrow

    §

    DownArrow

    §

    F1

    §

    F2

    §

    F3

    §

    F4

    §

    F5

    §

    F6

    §

    F7

    §

    F8

    §

    F9

    §

    F10

    §

    F11

    §

    F12

    §

    Interrupt

    Trait Implementations§

    source§

    impl Clone for KeySymbol

    source§

    fn clone(&self) -> KeySymbol

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for KeySymbol

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for KeySymbol

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl KeyAdapter<KeyPosition, KeySymbol> for SymbolAdapter

    source§

    fn map(state: &KeyState<KeyPosition>) -> KeyState<KeySymbol>

    Map the current state of the keyboard with symbols of type F to an +equivalent keyboard state with symbols of type T.
    source§

    impl KeyAdapter<KeySymbol, C64Keys> for C64SymbolAdapter

    source§

    fn map(state: &KeyState<KeySymbol>) -> KeyState<C64Keys>

    Map the current state of the keyboard with symbols of type F to an +equivalent keyboard state with symbols of type T.
    source§

    impl PartialEq<KeySymbol> for KeySymbol

    source§

    fn eq(&self, other: &KeySymbol) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for KeySymbol

    source§

    impl Eq for KeySymbol

    source§

    impl StructuralEq for KeySymbol

    source§

    impl StructuralPartialEq for KeySymbol

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> CallHasher for Twhere + T: Hash + ?Sized,

    §

    fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64where + H: Hash + ?Sized, + B: BuildHasher,

    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/keyboard/enum.VirtualKey.html b/doc/libnoentiendo/keyboard/enum.VirtualKey.html index 08cf9d06..d1bcb1e7 100644 --- a/doc/libnoentiendo/keyboard/enum.VirtualKey.html +++ b/doc/libnoentiendo/keyboard/enum.VirtualKey.html @@ -1,29 +1,29 @@ -VirtualKey in libnoentiendo::keyboard - Rust
    pub enum VirtualKey {
    +VirtualKey in libnoentiendo::keyboard - Rust
    pub enum VirtualKey {
         Commodore(C64Keys),
         CommodorePet(PetKeys),
    -}

    Variants§

    §

    Commodore(C64Keys)

    §

    CommodorePet(PetKeys)

    Trait Implementations§

    source§

    impl Clone for VirtualKey

    source§

    fn clone(&self) -> VirtualKey

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for VirtualKey

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for VirtualKey

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where - __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Hash for VirtualKey

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl KeyAdapter<VirtualKey, C64Keys> for C64VirtualAdapter

    source§

    fn map(state: &KeyState<VirtualKey>) -> KeyState<C64Keys>

    Map the current state of the keyboard with symbols of type F to an -equivalent keyboard state with symbols of type T.
    source§

    impl PartialEq<VirtualKey> for VirtualKey

    source§

    fn eq(&self, other: &VirtualKey) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for VirtualKey

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where - __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Copy for VirtualKey

    source§

    impl Eq for VirtualKey

    source§

    impl StructuralEq for VirtualKey

    source§

    impl StructuralPartialEq for VirtualKey

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> CallHasher for Twhere - T: Hash + ?Sized,

    §

    fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64where - H: Hash + ?Sized, - B: BuildHasher,

    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +}

    Variants§

    §

    Commodore(C64Keys)

    §

    CommodorePet(PetKeys)

    Trait Implementations§

    source§

    impl Clone for VirtualKey

    source§

    fn clone(&self) -> VirtualKey

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for VirtualKey

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for VirtualKey

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Hash for VirtualKey

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl KeyAdapter<VirtualKey, C64Keys> for C64VirtualAdapter

    source§

    fn map(state: &KeyState<VirtualKey>) -> KeyState<C64Keys>

    Map the current state of the keyboard with symbols of type F to an +equivalent keyboard state with symbols of type T.
    source§

    impl PartialEq<VirtualKey> for VirtualKey

    source§

    fn eq(&self, other: &VirtualKey) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for VirtualKey

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Copy for VirtualKey

    source§

    impl Eq for VirtualKey

    source§

    impl StructuralEq for VirtualKey

    source§

    impl StructuralPartialEq for VirtualKey

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> CallHasher for Twhere + T: Hash + ?Sized,

    §

    fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64where + H: Hash + ?Sized, + B: BuildHasher,

    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for Twhere - T: for<'de> Deserialize<'de>,

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for Twhere + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/doc/libnoentiendo/keyboard/index.html b/doc/libnoentiendo/keyboard/index.html index 968c4a58..0b62fb63 100644 --- a/doc/libnoentiendo/keyboard/index.html +++ b/doc/libnoentiendo/keyboard/index.html @@ -1,4 +1,4 @@ -libnoentiendo::keyboard - Rust

    Module libnoentiendo::keyboard

    source ·
    Expand description

    Various representations of keyboard scancodes are required in different parts of the codebase. Each platform typically has its own definition of a scancode (e.g. JavaScript’s event.code or Winit’s VirtualKeyCode), and each emulated system has a different set of keys (e.g. the Commodore key on the VIC-20 or the standalone " key on the PET).

    +libnoentiendo::keyboard - Rust

    Module libnoentiendo::keyboard

    source ·
    Expand description

    Various representations of keyboard scancodes are required in different parts of the codebase. Each platform typically has its own definition of a scancode (e.g. JavaScript’s event.code or Winit’s VirtualKeyCode), and each emulated system has a different set of keys (e.g. the Commodore key on the VIC-20 or the standalone " key on the PET).

    Utilities for handling keyboard input are defined in the keyboard module. This module defines a keyboard::KeyPosition enum to represent the physical keys which appear on a modern host keyboard and a keyboard::KeySymbol enum to represent the symbols which can be typed with a modern host keyboard. It also defines a keyboard::KeyState<T> struct to represent the set of currently-pressed keys in some representation T.

    Mapping between different keyboard representations is handled using keyboard::KeyAdapter<F, T> implementations. These exist for four different scenarios:

  • A representation for a symbol on a modern keyboard.
  • Traits

    • Represents a mapping from a key state of one type to a key state of another type. Mappings can be symbolic (preserve symbols across the mapping, and rewrite modifier keys as needed) or physical (maintain a one-to-one mapping from -physical keys to physical keys).
    \ No newline at end of file +physical keys to physical keys).
    \ No newline at end of file diff --git a/doc/libnoentiendo/keyboard/struct.KeyState.html b/doc/libnoentiendo/keyboard/struct.KeyState.html index d273ba10..558b261e 100644 --- a/doc/libnoentiendo/keyboard/struct.KeyState.html +++ b/doc/libnoentiendo/keyboard/struct.KeyState.html @@ -1,27 +1,27 @@ -KeyState in libnoentiendo::keyboard - Rust
    pub struct KeyState<T: PartialEq> { /* private fields */ }
    Expand description

    A set of keys that are currently pressed. +KeyState in libnoentiendo::keyboard - Rust

    pub struct KeyState<T: PartialEq> { /* private fields */ }
    Expand description

    A set of keys that are currently pressed. Parameter T is the type of the key symbols.

    -

    Implementations§

    source§

    impl<T: PartialEq> KeyState<T>

    source

    pub fn new() -> Self

    Creates a new, empty key state.

    -
    source

    pub fn press(&mut self, symbol: T)

    Adds a key to the set of pressed keys.

    -
    source

    pub fn release(&mut self, symbol: T)

    Removes a key from the set of pressed keys.

    -
    source

    pub fn pressed(&self) -> &Vec<T>

    Return the set of pressed keys.

    -
    source

    pub fn is_pressed(&self, symbol: T) -> bool

    Returns true if the given key is currently pressed.

    -

    Trait Implementations§

    source§

    impl<T: PartialEq> BitOr<KeyState<T>> for KeyState<T>

    §

    type Output = KeyState<T>

    The resulting type after applying the | operator.
    source§

    fn bitor(self, rhs: Self) -> Self::Output

    Performs the | operation. Read more
    source§

    impl<T: Clone + PartialEq> Clone for KeyState<T>

    source§

    fn clone(&self) -> KeyState<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug + PartialEq> Debug for KeyState<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: Default + PartialEq> Default for KeyState<T>

    source§

    fn default() -> KeyState<T>

    Returns the “default value” for a type. Read more
    source§

    impl<T: PartialEq + PartialEq> PartialEq<KeyState<T>> for KeyState<T>

    source§

    fn eq(&self, other: &KeyState<T>) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<T: PartialEq> StructuralPartialEq for KeyState<T>

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for KeyState<T>where - T: RefUnwindSafe,

    §

    impl<T> Send for KeyState<T>where - T: Send,

    §

    impl<T> Sync for KeyState<T>where - T: Sync,

    §

    impl<T> Unpin for KeyState<T>where - T: Unpin,

    §

    impl<T> UnwindSafe for KeyState<T>where - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Implementations§

    source§

    impl<T: PartialEq> KeyState<T>

    source

    pub fn new() -> Self

    Creates a new, empty key state.

    +
    source

    pub fn press(&mut self, symbol: T)

    Adds a key to the set of pressed keys.

    +
    source

    pub fn release(&mut self, symbol: T)

    Removes a key from the set of pressed keys.

    +
    source

    pub fn pressed(&self) -> &Vec<T>

    Return the set of pressed keys.

    +
    source

    pub fn is_pressed(&self, symbol: T) -> bool

    Returns true if the given key is currently pressed.

    +

    Trait Implementations§

    source§

    impl<T: PartialEq> BitOr<KeyState<T>> for KeyState<T>

    §

    type Output = KeyState<T>

    The resulting type after applying the | operator.
    source§

    fn bitor(self, rhs: Self) -> Self::Output

    Performs the | operation. Read more
    source§

    impl<T: Clone + PartialEq> Clone for KeyState<T>

    source§

    fn clone(&self) -> KeyState<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug + PartialEq> Debug for KeyState<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: Default + PartialEq> Default for KeyState<T>

    source§

    fn default() -> KeyState<T>

    Returns the “default value” for a type. Read more
    source§

    impl<T: PartialEq + PartialEq> PartialEq<KeyState<T>> for KeyState<T>

    source§

    fn eq(&self, other: &KeyState<T>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<T: PartialEq> StructuralPartialEq for KeyState<T>

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for KeyState<T>where + T: RefUnwindSafe,

    §

    impl<T> Send for KeyState<T>where + T: Send,

    §

    impl<T> Sync for KeyState<T>where + T: Sync,

    §

    impl<T> Unpin for KeyState<T>where + T: Unpin,

    §

    impl<T> UnwindSafe for KeyState<T>where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/keyboard/struct.SymbolAdapter.html b/doc/libnoentiendo/keyboard/struct.SymbolAdapter.html index 95130d28..b4642328 100644 --- a/doc/libnoentiendo/keyboard/struct.SymbolAdapter.html +++ b/doc/libnoentiendo/keyboard/struct.SymbolAdapter.html @@ -1,14 +1,14 @@ -SymbolAdapter in libnoentiendo::keyboard - Rust
    pub struct SymbolAdapter;
    Expand description

    An adapter that maps physical key positions to symbols.

    -

    Trait Implementations§

    source§

    impl KeyAdapter<KeyPosition, KeySymbol> for SymbolAdapter

    source§

    fn map(state: &KeyState<KeyPosition>) -> KeyState<KeySymbol>

    Map the current state of the keyboard with symbols of type F to an -equivalent keyboard state with symbols of type T.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +SymbolAdapter in libnoentiendo::keyboard - Rust
    pub struct SymbolAdapter;
    Expand description

    An adapter that maps physical key positions to symbols.

    +

    Trait Implementations§

    source§

    impl KeyAdapter<KeyPosition, KeySymbol> for SymbolAdapter

    source§

    fn map(state: &KeyState<KeyPosition>) -> KeyState<KeySymbol>

    Map the current state of the keyboard with symbols of type F to an +equivalent keyboard state with symbols of type T.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/keyboard/trait.KeyAdapter.html b/doc/libnoentiendo/keyboard/trait.KeyAdapter.html index 04829d46..61c81a07 100644 --- a/doc/libnoentiendo/keyboard/trait.KeyAdapter.html +++ b/doc/libnoentiendo/keyboard/trait.KeyAdapter.html @@ -1,10 +1,10 @@ -KeyAdapter in libnoentiendo::keyboard - Rust
    pub trait KeyAdapter<F: PartialEq, T: PartialEq> {
    +KeyAdapter in libnoentiendo::keyboard - Rust
    pub trait KeyAdapter<F: PartialEq, T: PartialEq> {
         // Required method
         fn map(state: &KeyState<F>) -> KeyState<T>;
     }
    Expand description

    Represents a mapping from a key state of one type to a key state of another type. Mappings can be symbolic (preserve symbols across the mapping, and rewrite modifier keys as needed) or physical (maintain a one-to-one mapping from physical keys to physical keys).

    -

    Required Methods§

    source

    fn map(state: &KeyState<F>) -> KeyState<T>

    Map the current state of the keyboard with symbols of type F to an +

    Required Methods§

    source

    fn map(state: &KeyState<F>) -> KeyState<T>

    Map the current state of the keyboard with symbols of type F to an equivalent keyboard state with symbols of type T.

    -

    Implementors§

    \ No newline at end of file +

    Implementors§

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/enum.ActiveInterrupt.html b/doc/libnoentiendo/memory/enum.ActiveInterrupt.html index 8c571bef..38938d8a 100644 --- a/doc/libnoentiendo/memory/enum.ActiveInterrupt.html +++ b/doc/libnoentiendo/memory/enum.ActiveInterrupt.html @@ -1,4 +1,4 @@ -ActiveInterrupt in libnoentiendo::memory - Rust
    pub enum ActiveInterrupt {
    +ActiveInterrupt in libnoentiendo::memory - Rust
    pub enum ActiveInterrupt {
         None,
         NMI,
         IRQ,
    @@ -6,19 +6,19 @@
     

    Variants§

    §

    None

    No interrupts are active.

    §

    NMI

    An NMI (non-maskable interrupt) is active.

    §

    IRQ

    An IRQ (maskable interrupt request) is active.

    -

    Trait Implementations§

    source§

    impl Debug for ActiveInterrupt

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq<ActiveInterrupt> for ActiveInterrupt

    source§

    fn eq(&self, other: &ActiveInterrupt) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for ActiveInterrupt

    source§

    impl StructuralEq for ActiveInterrupt

    source§

    impl StructuralPartialEq for ActiveInterrupt

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Debug for ActiveInterrupt

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq<ActiveInterrupt> for ActiveInterrupt

    source§

    fn eq(&self, other: &ActiveInterrupt) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for ActiveInterrupt

    source§

    impl StructuralEq for ActiveInterrupt

    source§

    impl StructuralPartialEq for ActiveInterrupt

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/index.html b/doc/libnoentiendo/memory/index.html index 411ddc38..d9557e81 100644 --- a/doc/libnoentiendo/memory/index.html +++ b/doc/libnoentiendo/memory/index.html @@ -1,4 +1,4 @@ -libnoentiendo::memory - Rust

    Module libnoentiendo::memory

    source ·
    Expand description

    A memory::Memory implementation can be read from and written to, but it can also be polled for interrupts. This is used for the PIA, VIA, and other chips that interface over memory but also trigger interrupts. The memory module provides implementations for various types of memory and other memory-mapped devices. Mappings are handled using memory::BranchMemory.

    +libnoentiendo::memory - Rust

    Module libnoentiendo::memory

    source ·
    Expand description

    A memory::Memory implementation can be read from and written to, but it can also be polled for interrupts. This is used for the PIA, VIA, and other chips that interface over memory but also trigger interrupts. The memory module provides implementations for various types of memory and other memory-mapped devices. Mappings are handled using memory::BranchMemory.

    Modules

    • The various interface adapters (6520, 6522, 6526) for the MOS 6502 CPU.

    Structs

    • Represents the memory banking features found in the Commodore 64 and other devices. Multiple memory implementations are all mapped to the same address space. The active implementation is selected by external logic.
    • Represents a simple block of contiguous memory, with no additional hardware. @@ -9,4 +9,4 @@ to the underlying Memory object.
    • Represents the port built into a MOS 6510 processor, mapped to memory addresses 0x0000 (for the DDR) and 0x0001 (for the port itself).
    • Memory that does nothing when read or written to.
    • A Port that does nothing.
    • Information about the system that Memory implementations can use to determine if an interrupt should be triggered.

    Enums

    Traits

    • Represents a contiguous block of memory which can be read, written, reset, and polled to see if an interrupt has been triggered.
    • A Port that can be read from, written to, reset, or polled for interrupts. -Used in the MOS 6520 PIA and the 6522 VIA.
    \ No newline at end of file +Used in the MOS 6520 PIA and the 6522 VIA.
    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/mos652x/enum.TimerClockSource.html b/doc/libnoentiendo/memory/mos652x/enum.TimerClockSource.html index 4b608786..d2f0814a 100644 --- a/doc/libnoentiendo/memory/mos652x/enum.TimerClockSource.html +++ b/doc/libnoentiendo/memory/mos652x/enum.TimerClockSource.html @@ -1,4 +1,4 @@ -TimerClockSource in libnoentiendo::memory::mos652x - Rust
    pub enum TimerClockSource {
    +TimerClockSource in libnoentiendo::memory::mos652x - Rust
    pub enum TimerClockSource {
         Phi2,
         Count,
         Chained,
    @@ -8,15 +8,15 @@
     
    §

    Count

    Use pulses on the external CNT pin.

    §

    Chained

    Count underflows of the other timer.

    §

    ChainedCount

    Count underflows of the other timer, but only if the CNT pin is high.

    -

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/mos652x/enum.TimerOutput.html b/doc/libnoentiendo/memory/mos652x/enum.TimerOutput.html index c893e5f0..d66fe06a 100644 --- a/doc/libnoentiendo/memory/mos652x/enum.TimerOutput.html +++ b/doc/libnoentiendo/memory/mos652x/enum.TimerOutput.html @@ -1,4 +1,4 @@ -TimerOutput in libnoentiendo::memory::mos652x - Rust
    pub enum TimerOutput {
    +TimerOutput in libnoentiendo::memory::mos652x - Rust
    pub enum TimerOutput {
         None,
         Pulse,
         PulseCount,
    @@ -8,15 +8,15 @@
     
    §

    Pulse

    The timer will output a single pulse on PB6 or PB7.

    §

    PulseCount

    The timer will output a set number of pulses.

    §

    Toggle

    The timer will toggle the output on PB6 or PB7.

    -

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/mos652x/index.html b/doc/libnoentiendo/memory/mos652x/index.html index de4585c2..bf5f9dd9 100644 --- a/doc/libnoentiendo/memory/mos652x/index.html +++ b/doc/libnoentiendo/memory/mos652x/index.html @@ -1,7 +1,7 @@ -libnoentiendo::memory::mos652x - Rust
    Expand description

    The various interface adapters (6520, 6522, 6526) for the MOS 6502 CPU.

    +libnoentiendo::memory::mos652x - Rust
    Expand description

    The various interface adapters (6520, 6522, 6526) for the MOS 6502 CPU.

    Structs

    • The MOS 6526 Complex Interface Adapter (CIA). Contains two ports, two timers, a real-time clock, a shift register, and interrupt registers.
    • Registers for interrupt flags and interrupt enable bits. Each bit from 0 to 6 corresponds to an interrupt source.
    • The MOS 6520 Peripheral Interface Adapter (PIA), containing two ports and some control lines.
    • A port and its associated registers on the MOS 6522 VIA or MOS 6526 CIA.
    • The shift register used by the MOS 6522 VIA and MOS 6526 CIA.
    • A timer circuit on the MOS 6522 VIA or MOS 6526 CIA.
    • The MOS 6522 Versatile Interface Adapter (VIA). Contains two ports, two timers, a shift register, and some interrupt and control registers. -Source: http://archive.6502.org/datasheets/mos_6522_preliminary_nov_1977.pdf

    Enums

    • The source of the timer’s clock, which controls the rate at which its clock decrements.
    • The manner in which the timer will output signals to the port, if at all.
    \ No newline at end of file +Source: http://archive.6502.org/datasheets/mos_6522_preliminary_nov_1977.pdf

    Enums

    • The source of the timer’s clock, which controls the rate at which its clock decrements.
    • The manner in which the timer will output signals to the port, if at all.
    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/mos652x/struct.Cia.html b/doc/libnoentiendo/memory/mos652x/struct.Cia.html index 17191a73..ffcab1bf 100644 --- a/doc/libnoentiendo/memory/mos652x/struct.Cia.html +++ b/doc/libnoentiendo/memory/mos652x/struct.Cia.html @@ -1,19 +1,19 @@ -Cia in libnoentiendo::memory::mos652x - Rust
    pub struct Cia { /* private fields */ }
    Expand description

    The MOS 6526 Complex Interface Adapter (CIA). Contains two ports, two timers, +Cia in libnoentiendo::memory::mos652x - Rust

    pub struct Cia { /* private fields */ }
    Expand description

    The MOS 6526 Complex Interface Adapter (CIA). Contains two ports, two timers, a real-time clock, a shift register, and interrupt registers.

    -

    Implementations§

    source§

    impl Cia

    source

    pub fn new(port_a: Box<dyn Port>, port_b: Box<dyn Port>) -> Self

    Trait Implementations§

    source§

    impl Memory for Cia

    source§

    fn read(&mut self, address: u16) -> u8

    Read a byte from this memory at the given address. -Implementations may trigger side effects as a result of this read.
    source§

    fn write(&mut self, address: u16, value: u8)

    Write a byte to this memory at the given address.
    source§

    fn reset(&mut self)

    Reset this memory to its initial state, e.g. after a system reboot. +

    Implementations§

    source§

    impl Cia

    source

    pub fn new(port_a: Box<dyn Port>, port_b: Box<dyn Port>) -> Self

    Trait Implementations§

    source§

    impl Memory for Cia

    source§

    fn read(&mut self, address: u16) -> u8

    Read a byte from this memory at the given address. +Implementations may trigger side effects as a result of this read.
    source§

    fn write(&mut self, address: u16, value: u8)

    Write a byte to this memory at the given address.
    source§

    fn reset(&mut self)

    Reset this memory to its initial state, e.g. after a system reboot. Sometimes this will clear the contents of the memory, like with RAM. -Other times this is a no-op, e.g. for ROM.
    source§

    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> ActiveInterrupt

    Poll this memory to see if an interrupt has been triggered. +Other times this is a no-op, e.g. for ROM.
    source§

    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> ActiveInterrupt

    Poll this memory to see if an interrupt has been triggered. Implementations may trigger an NMI or IRQ for any -implementation-dependent reason.

    Auto Trait Implementations§

    §

    impl !RefUnwindSafe for Cia

    §

    impl !Send for Cia

    §

    impl !Sync for Cia

    §

    impl Unpin for Cia

    §

    impl !UnwindSafe for Cia

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +implementation-dependent reason.

    Auto Trait Implementations§

    §

    impl !RefUnwindSafe for Cia

    §

    impl !Send for Cia

    §

    impl !Sync for Cia

    §

    impl Unpin for Cia

    §

    impl !UnwindSafe for Cia

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/mos652x/struct.InterruptRegister.html b/doc/libnoentiendo/memory/mos652x/struct.InterruptRegister.html index 0588b867..ad14b6fa 100644 --- a/doc/libnoentiendo/memory/mos652x/struct.InterruptRegister.html +++ b/doc/libnoentiendo/memory/mos652x/struct.InterruptRegister.html @@ -1,22 +1,22 @@ -InterruptRegister in libnoentiendo::memory::mos652x - Rust
    pub struct InterruptRegister {
    -    pub interrupt_enable: u8,
    +InterruptRegister in libnoentiendo::memory::mos652x - Rust
    pub struct InterruptRegister {
    +    pub interrupt_enable: u8,
     }
    Expand description

    Registers for interrupt flags and interrupt enable bits. Each bit from 0 to 6 corresponds to an interrupt source.

    -

    Fields§

    §interrupt_enable: u8

    The current state of which interrupts are enabled. +

    Fields§

    §interrupt_enable: u8

    The current state of which interrupts are enabled. If a bit is set, the corresponding interrupt is enabled.

    -

    Implementations§

    source§

    impl InterruptRegister

    source

    pub fn read_flags(&self, value: u8) -> u8

    Read the apparent value of the interrupt register, based on the provided interrupt enable bits.

    -
    source

    pub fn read_enable(&self) -> u8

    Read the value of the interrupt enable register.

    -
    source

    pub fn write_enable(&mut self, value: u8)

    Write to the interrupt enable register.

    -
    source

    pub fn is_enabled(&self, interrupt: u8) -> bool

    Is the specified interrupt enabled?

    -

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Implementations§

    source§

    impl InterruptRegister

    source

    pub fn read_flags(&self, value: u8) -> u8

    Read the apparent value of the interrupt register, based on the provided interrupt enable bits.

    +
    source

    pub fn read_enable(&self) -> u8

    Read the value of the interrupt enable register.

    +
    source

    pub fn write_enable(&mut self, value: u8)

    Write to the interrupt enable register.

    +
    source

    pub fn is_enabled(&self, interrupt: u8) -> bool

    Is the specified interrupt enabled?

    +

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/mos652x/struct.Pia.html b/doc/libnoentiendo/memory/mos652x/struct.Pia.html index 41e713c9..8ff699e2 100644 --- a/doc/libnoentiendo/memory/mos652x/struct.Pia.html +++ b/doc/libnoentiendo/memory/mos652x/struct.Pia.html @@ -1,20 +1,20 @@ -Pia in libnoentiendo::memory::mos652x - Rust
    pub struct Pia { /* private fields */ }
    Expand description

    The MOS 6520 Peripheral Interface Adapter (PIA), containing two ports and +Pia in libnoentiendo::memory::mos652x - Rust

    pub struct Pia { /* private fields */ }
    Expand description

    The MOS 6520 Peripheral Interface Adapter (PIA), containing two ports and some control lines.

    -

    Implementations§

    source§

    impl Pia

    source

    pub fn new(a: Box<dyn Port>, b: Box<dyn Port>) -> Self

    Create a new PIA with the two given port implementations.

    -

    Trait Implementations§

    source§

    impl Memory for Pia

    source§

    fn read(&mut self, address: u16) -> u8

    Read a byte from this memory at the given address. -Implementations may trigger side effects as a result of this read.
    source§

    fn write(&mut self, address: u16, value: u8)

    Write a byte to this memory at the given address.
    source§

    fn reset(&mut self)

    Reset this memory to its initial state, e.g. after a system reboot. +

    Implementations§

    source§

    impl Pia

    source

    pub fn new(a: Box<dyn Port>, b: Box<dyn Port>) -> Self

    Create a new PIA with the two given port implementations.

    +

    Trait Implementations§

    source§

    impl Memory for Pia

    source§

    fn read(&mut self, address: u16) -> u8

    Read a byte from this memory at the given address. +Implementations may trigger side effects as a result of this read.
    source§

    fn write(&mut self, address: u16, value: u8)

    Write a byte to this memory at the given address.
    source§

    fn reset(&mut self)

    Reset this memory to its initial state, e.g. after a system reboot. Sometimes this will clear the contents of the memory, like with RAM. -Other times this is a no-op, e.g. for ROM.
    source§

    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> ActiveInterrupt

    Poll this memory to see if an interrupt has been triggered. +Other times this is a no-op, e.g. for ROM.
    source§

    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> ActiveInterrupt

    Poll this memory to see if an interrupt has been triggered. Implementations may trigger an NMI or IRQ for any -implementation-dependent reason.

    Auto Trait Implementations§

    §

    impl !RefUnwindSafe for Pia

    §

    impl !Send for Pia

    §

    impl !Sync for Pia

    §

    impl Unpin for Pia

    §

    impl !UnwindSafe for Pia

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +implementation-dependent reason.

    Auto Trait Implementations§

    §

    impl !RefUnwindSafe for Pia

    §

    impl !Send for Pia

    §

    impl !Sync for Pia

    §

    impl Unpin for Pia

    §

    impl !UnwindSafe for Pia

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/mos652x/struct.PortRegisters.html b/doc/libnoentiendo/memory/mos652x/struct.PortRegisters.html index c0166413..2301b8fa 100644 --- a/doc/libnoentiendo/memory/mos652x/struct.PortRegisters.html +++ b/doc/libnoentiendo/memory/mos652x/struct.PortRegisters.html @@ -1,17 +1,17 @@ -PortRegisters in libnoentiendo::memory::mos652x - Rust
    pub struct PortRegisters { /* private fields */ }
    Expand description

    A port and its associated registers on the MOS 6522 VIA or MOS 6526 CIA.

    -

    Implementations§

    source§

    impl PortRegisters

    source

    pub fn new(port: Box<dyn Port>) -> Self

    source

    pub fn read(&mut self) -> u8

    Read from the port, respecting the DDR.

    -
    source

    pub fn write(&mut self, value: u8)

    Write to the port, respecting the DDR.

    -
    source

    pub fn poll(&mut self, cycles: u32, info: &SystemInfo) -> bool

    Poll the underlying port for interrupts.

    -
    source

    pub fn reset(&mut self)

    Reset the port to its initial state.

    -

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +PortRegisters in libnoentiendo::memory::mos652x - Rust
    pub struct PortRegisters { /* private fields */ }
    Expand description

    A port and its associated registers on the MOS 6522 VIA or MOS 6526 CIA.

    +

    Implementations§

    source§

    impl PortRegisters

    source

    pub fn new(port: Box<dyn Port>) -> Self

    source

    pub fn read(&mut self) -> u8

    Read from the port, respecting the DDR.

    +
    source

    pub fn write(&mut self, value: u8)

    Write to the port, respecting the DDR.

    +
    source

    pub fn poll(&mut self, cycles: u32, info: &SystemInfo) -> bool

    Poll the underlying port for interrupts.

    +
    source

    pub fn reset(&mut self)

    Reset the port to its initial state.

    +

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/mos652x/struct.ShiftRegister.html b/doc/libnoentiendo/memory/mos652x/struct.ShiftRegister.html index 21551d14..b6c6e41a 100644 --- a/doc/libnoentiendo/memory/mos652x/struct.ShiftRegister.html +++ b/doc/libnoentiendo/memory/mos652x/struct.ShiftRegister.html @@ -1,14 +1,14 @@ -ShiftRegister in libnoentiendo::memory::mos652x - Rust
    pub struct ShiftRegister { /* private fields */ }
    Expand description

    The shift register used by the MOS 6522 VIA and MOS 6526 CIA.

    -

    Implementations§

    source§

    impl ShiftRegister

    source

    pub fn new() -> Self

    source

    pub fn reset(&mut self)

    Reset the shift register’s internal state.

    -

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +ShiftRegister in libnoentiendo::memory::mos652x - Rust
    pub struct ShiftRegister { /* private fields */ }
    Expand description

    The shift register used by the MOS 6522 VIA and MOS 6526 CIA.

    +

    Implementations§

    source§

    impl ShiftRegister

    source

    pub fn new() -> Self

    source

    pub fn reset(&mut self)

    Reset the shift register’s internal state.

    +

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/mos652x/struct.Timer.html b/doc/libnoentiendo/memory/mos652x/struct.Timer.html index 2f2d7622..7646f186 100644 --- a/doc/libnoentiendo/memory/mos652x/struct.Timer.html +++ b/doc/libnoentiendo/memory/mos652x/struct.Timer.html @@ -1,14 +1,14 @@ -Timer in libnoentiendo::memory::mos652x - Rust
    pub struct Timer { /* private fields */ }
    Expand description

    A timer circuit on the MOS 6522 VIA or MOS 6526 CIA.

    -

    Implementations§

    source§

    impl Timer

    source

    pub fn new() -> Self

    source

    pub fn poll(&mut self, cycles: u32, _info: &SystemInfo) -> bool

    Poll the timer (decrement the counter, fire the interrupt if necessary).

    -

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Timer

    §

    impl Send for Timer

    §

    impl Sync for Timer

    §

    impl Unpin for Timer

    §

    impl UnwindSafe for Timer

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +Timer in libnoentiendo::memory::mos652x - Rust
    pub struct Timer { /* private fields */ }
    Expand description

    A timer circuit on the MOS 6522 VIA or MOS 6526 CIA.

    +

    Implementations§

    source§

    impl Timer

    source

    pub fn new() -> Self

    source

    pub fn poll(&mut self, cycles: u32, _info: &SystemInfo) -> bool

    Poll the timer (decrement the counter, fire the interrupt if necessary).

    +

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Timer

    §

    impl Send for Timer

    §

    impl Sync for Timer

    §

    impl Unpin for Timer

    §

    impl UnwindSafe for Timer

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/mos652x/struct.Via.html b/doc/libnoentiendo/memory/mos652x/struct.Via.html index 0c1c4e34..c3ca8e73 100644 --- a/doc/libnoentiendo/memory/mos652x/struct.Via.html +++ b/doc/libnoentiendo/memory/mos652x/struct.Via.html @@ -1,20 +1,20 @@ -Via in libnoentiendo::memory::mos652x - Rust
    pub struct Via { /* private fields */ }
    Expand description

    The MOS 6522 Versatile Interface Adapter (VIA). Contains two ports, +Via in libnoentiendo::memory::mos652x - Rust

    pub struct Via { /* private fields */ }
    Expand description

    The MOS 6522 Versatile Interface Adapter (VIA). Contains two ports, two timers, a shift register, and some interrupt and control registers. Source: http://archive.6502.org/datasheets/mos_6522_preliminary_nov_1977.pdf

    -

    Implementations§

    source§

    impl Via

    source

    pub fn new(a: Box<dyn Port>, b: Box<dyn Port>) -> Self

    Trait Implementations§

    source§

    impl Memory for Via

    source§

    fn read(&mut self, address: u16) -> u8

    Read a byte from this memory at the given address. -Implementations may trigger side effects as a result of this read.
    source§

    fn write(&mut self, address: u16, value: u8)

    Write a byte to this memory at the given address.
    source§

    fn reset(&mut self)

    Reset this memory to its initial state, e.g. after a system reboot. +

    Implementations§

    source§

    impl Via

    source

    pub fn new(a: Box<dyn Port>, b: Box<dyn Port>) -> Self

    Trait Implementations§

    source§

    impl Memory for Via

    source§

    fn read(&mut self, address: u16) -> u8

    Read a byte from this memory at the given address. +Implementations may trigger side effects as a result of this read.
    source§

    fn write(&mut self, address: u16, value: u8)

    Write a byte to this memory at the given address.
    source§

    fn reset(&mut self)

    Reset this memory to its initial state, e.g. after a system reboot. Sometimes this will clear the contents of the memory, like with RAM. -Other times this is a no-op, e.g. for ROM.
    source§

    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> ActiveInterrupt

    Poll this memory to see if an interrupt has been triggered. +Other times this is a no-op, e.g. for ROM.
    source§

    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> ActiveInterrupt

    Poll this memory to see if an interrupt has been triggered. Implementations may trigger an NMI or IRQ for any -implementation-dependent reason.

    Auto Trait Implementations§

    §

    impl !RefUnwindSafe for Via

    §

    impl !Send for Via

    §

    impl !Sync for Via

    §

    impl Unpin for Via

    §

    impl !UnwindSafe for Via

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +implementation-dependent reason.

    Auto Trait Implementations§

    §

    impl !RefUnwindSafe for Via

    §

    impl !Send for Via

    §

    impl !Sync for Via

    §

    impl Unpin for Via

    §

    impl !UnwindSafe for Via

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/struct.BankedMemory.html b/doc/libnoentiendo/memory/struct.BankedMemory.html index f678fc31..a4d815c2 100644 --- a/doc/libnoentiendo/memory/struct.BankedMemory.html +++ b/doc/libnoentiendo/memory/struct.BankedMemory.html @@ -1,22 +1,22 @@ -BankedMemory in libnoentiendo::memory - Rust
    pub struct BankedMemory { /* private fields */ }
    Expand description

    Represents the memory banking features found in the Commodore 64 and other +BankedMemory in libnoentiendo::memory - Rust

    pub struct BankedMemory { /* private fields */ }
    Expand description

    Represents the memory banking features found in the Commodore 64 and other devices. Multiple memory implementations are all mapped to the same address space. The active implementation is selected by external logic.

    -

    Implementations§

    source§

    impl BankedMemory

    source

    pub fn new(active: Rc<Cell<usize>>) -> Self

    Create a new, empty banked memory.

    -
    source

    pub fn bank(self, memory: Box<dyn Memory>) -> Self

    Add a new memory implementation to the banked memory.

    -

    Trait Implementations§

    source§

    impl Memory for BankedMemory

    source§

    fn read(&mut self, address: u16) -> u8

    Read a byte from this memory at the given address. -Implementations may trigger side effects as a result of this read.
    source§

    fn write(&mut self, address: u16, value: u8)

    Write a byte to this memory at the given address.
    source§

    fn reset(&mut self)

    Reset this memory to its initial state, e.g. after a system reboot. +

    Implementations§

    source§

    impl BankedMemory

    source

    pub fn new(active: Rc<Cell<usize>>) -> Self

    Create a new, empty banked memory.

    +
    source

    pub fn bank(self, memory: Box<dyn Memory>) -> Self

    Add a new memory implementation to the banked memory.

    +

    Trait Implementations§

    source§

    impl Memory for BankedMemory

    source§

    fn read(&mut self, address: u16) -> u8

    Read a byte from this memory at the given address. +Implementations may trigger side effects as a result of this read.
    source§

    fn write(&mut self, address: u16, value: u8)

    Write a byte to this memory at the given address.
    source§

    fn reset(&mut self)

    Reset this memory to its initial state, e.g. after a system reboot. Sometimes this will clear the contents of the memory, like with RAM. -Other times this is a no-op, e.g. for ROM.
    source§

    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> ActiveInterrupt

    Poll this memory to see if an interrupt has been triggered. +Other times this is a no-op, e.g. for ROM.
    source§

    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> ActiveInterrupt

    Poll this memory to see if an interrupt has been triggered. Implementations may trigger an NMI or IRQ for any -implementation-dependent reason.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +implementation-dependent reason.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/struct.BlockMemory.html b/doc/libnoentiendo/memory/struct.BlockMemory.html index f31d8dce..8fd3f405 100644 --- a/doc/libnoentiendo/memory/struct.BlockMemory.html +++ b/doc/libnoentiendo/memory/struct.BlockMemory.html @@ -1,26 +1,26 @@ -BlockMemory in libnoentiendo::memory - Rust
    pub struct BlockMemory { /* private fields */ }
    Expand description

    Represents a simple block of contiguous memory, with no additional hardware. +BlockMemory in libnoentiendo::memory - Rust

    pub struct BlockMemory { /* private fields */ }
    Expand description

    Represents a simple block of contiguous memory, with no additional hardware. This can be used to represent both RAM and ROM. Reading from this memory is side-effect free.

    -

    Implementations§

    source§

    impl BlockMemory

    source

    pub fn ram(size: usize) -> Self

    Create a BlockMemory of the given size which clears its contents when +

    Implementations§

    source§

    impl BlockMemory

    source

    pub fn ram(size: usize) -> Self

    Create a BlockMemory of the given size which clears its contents when reset.

    -
    source

    pub fn rom(size: usize) -> Self

    Create a BlockMemory of the given size which does not clear its contents +

    source

    pub fn rom(size: usize) -> Self

    Create a BlockMemory of the given size which does not clear its contents when reset.

    -
    source

    pub fn from_file(size: usize, file: RomFile) -> Self

    Create a BlockMemory of the given size which loads its contents from the +

    source

    pub fn from_file(size: usize, file: RomFile) -> Self

    Create a BlockMemory of the given size which loads its contents from the given file when reset.

    -

    Trait Implementations§

    source§

    impl Memory for BlockMemory

    source§

    fn read(&mut self, address: u16) -> u8

    Read a byte from this memory at the given address. -Implementations may trigger side effects as a result of this read.
    source§

    fn write(&mut self, address: u16, value: u8)

    Write a byte to this memory at the given address.
    source§

    fn reset(&mut self)

    Reset this memory to its initial state, e.g. after a system reboot. +

    Trait Implementations§

    source§

    impl Memory for BlockMemory

    source§

    fn read(&mut self, address: u16) -> u8

    Read a byte from this memory at the given address. +Implementations may trigger side effects as a result of this read.
    source§

    fn write(&mut self, address: u16, value: u8)

    Write a byte to this memory at the given address.
    source§

    fn reset(&mut self)

    Reset this memory to its initial state, e.g. after a system reboot. Sometimes this will clear the contents of the memory, like with RAM. -Other times this is a no-op, e.g. for ROM.
    source§

    fn poll(&mut self, _cycles: u32, _info: &SystemInfo) -> ActiveInterrupt

    Poll this memory to see if an interrupt has been triggered. +Other times this is a no-op, e.g. for ROM.
    source§

    fn poll(&mut self, _cycles: u32, _info: &SystemInfo) -> ActiveInterrupt

    Poll this memory to see if an interrupt has been triggered. Implementations may trigger an NMI or IRQ for any -implementation-dependent reason.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +implementation-dependent reason.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/struct.BranchMemory.html b/doc/libnoentiendo/memory/struct.BranchMemory.html index b08c3d11..4244caf2 100644 --- a/doc/libnoentiendo/memory/struct.BranchMemory.html +++ b/doc/libnoentiendo/memory/struct.BranchMemory.html @@ -1,24 +1,24 @@ -BranchMemory in libnoentiendo::memory - Rust
    pub struct BranchMemory { /* private fields */ }
    Expand description

    Maps several Memory objects into a single contiguous address space. +BranchMemory in libnoentiendo::memory - Rust

    pub struct BranchMemory { /* private fields */ }
    Expand description

    Maps several Memory objects into a single contiguous address space. Each mapped object is assigned a starting address, and reads and writes will have the starting address subtracted from them before being passed to the underlying Memory object.

    -

    Implementations§

    source§

    impl BranchMemory

    source

    pub fn new() -> Self

    Create a new BranchMemory with no mappings.

    -
    source

    pub fn map(self, address: usize, memory: Box<dyn Memory>) -> Self

    Map a new Memory object to the given starting address in this mapping. +

    Implementations§

    source§

    impl BranchMemory

    source

    pub fn new() -> Self

    Create a new BranchMemory with no mappings.

    +
    source

    pub fn map(self, address: usize, memory: Box<dyn Memory>) -> Self

    Map a new Memory object to the given starting address in this mapping. Returns this BranchMemory for chaining.

    -

    Trait Implementations§

    source§

    impl Default for BranchMemory

    source§

    fn default() -> BranchMemory

    Returns the “default value” for a type. Read more
    source§

    impl Memory for BranchMemory

    source§

    fn read(&mut self, address: u16) -> u8

    Read a byte from this memory at the given address. -Implementations may trigger side effects as a result of this read.
    source§

    fn write(&mut self, address: u16, value: u8)

    Write a byte to this memory at the given address.
    source§

    fn reset(&mut self)

    Reset this memory to its initial state, e.g. after a system reboot. +

    Trait Implementations§

    source§

    impl Default for BranchMemory

    source§

    fn default() -> BranchMemory

    Returns the “default value” for a type. Read more
    source§

    impl Memory for BranchMemory

    source§

    fn read(&mut self, address: u16) -> u8

    Read a byte from this memory at the given address. +Implementations may trigger side effects as a result of this read.
    source§

    fn write(&mut self, address: u16, value: u8)

    Write a byte to this memory at the given address.
    source§

    fn reset(&mut self)

    Reset this memory to its initial state, e.g. after a system reboot. Sometimes this will clear the contents of the memory, like with RAM. -Other times this is a no-op, e.g. for ROM.
    source§

    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> ActiveInterrupt

    Poll this memory to see if an interrupt has been triggered. +Other times this is a no-op, e.g. for ROM.
    source§

    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> ActiveInterrupt

    Poll this memory to see if an interrupt has been triggered. Implementations may trigger an NMI or IRQ for any -implementation-dependent reason.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +implementation-dependent reason.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/struct.Mos6510Port.html b/doc/libnoentiendo/memory/struct.Mos6510Port.html index ec898fcd..90bab6a8 100644 --- a/doc/libnoentiendo/memory/struct.Mos6510Port.html +++ b/doc/libnoentiendo/memory/struct.Mos6510Port.html @@ -1,19 +1,19 @@ -Mos6510Port in libnoentiendo::memory - Rust
    pub struct Mos6510Port { /* private fields */ }
    Expand description

    Represents the port built into a MOS 6510 processor, mapped to memory addresses 0x0000 (for the DDR) and 0x0001 (for the port itself).

    -

    Implementations§

    source§

    impl Mos6510Port

    source

    pub fn new(port: Box<dyn Port>) -> Self

    Create a new MOS 6510 port with the given port.

    -

    Trait Implementations§

    source§

    impl Memory for Mos6510Port

    source§

    fn read(&mut self, address: u16) -> u8

    Read a byte from this memory at the given address. -Implementations may trigger side effects as a result of this read.
    source§

    fn write(&mut self, address: u16, value: u8)

    Write a byte to this memory at the given address.
    source§

    fn reset(&mut self)

    Reset this memory to its initial state, e.g. after a system reboot. +Mos6510Port in libnoentiendo::memory - Rust
    pub struct Mos6510Port { /* private fields */ }
    Expand description

    Represents the port built into a MOS 6510 processor, mapped to memory addresses 0x0000 (for the DDR) and 0x0001 (for the port itself).

    +

    Implementations§

    source§

    impl Mos6510Port

    source

    pub fn new(port: Box<dyn Port>) -> Self

    Create a new MOS 6510 port with the given port.

    +

    Trait Implementations§

    source§

    impl Memory for Mos6510Port

    source§

    fn read(&mut self, address: u16) -> u8

    Read a byte from this memory at the given address. +Implementations may trigger side effects as a result of this read.
    source§

    fn write(&mut self, address: u16, value: u8)

    Write a byte to this memory at the given address.
    source§

    fn reset(&mut self)

    Reset this memory to its initial state, e.g. after a system reboot. Sometimes this will clear the contents of the memory, like with RAM. -Other times this is a no-op, e.g. for ROM.
    source§

    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> ActiveInterrupt

    Poll this memory to see if an interrupt has been triggered. +Other times this is a no-op, e.g. for ROM.
    source§

    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> ActiveInterrupt

    Poll this memory to see if an interrupt has been triggered. Implementations may trigger an NMI or IRQ for any -implementation-dependent reason.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +implementation-dependent reason.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/struct.NullMemory.html b/doc/libnoentiendo/memory/struct.NullMemory.html index 4e00cf1f..7655b076 100644 --- a/doc/libnoentiendo/memory/struct.NullMemory.html +++ b/doc/libnoentiendo/memory/struct.NullMemory.html @@ -1,20 +1,20 @@ -NullMemory in libnoentiendo::memory - Rust
    pub struct NullMemory { /* private fields */ }
    Expand description

    Memory that does nothing when read or written to.

    -

    Implementations§

    source§

    impl NullMemory

    source

    pub fn new() -> Self

    Create a new NullMemory that will not warn when read or written to.

    -
    source

    pub fn with_warnings(message: &'static str) -> Self

    Create a new NullMemory that will warn when read or written to.

    -

    Trait Implementations§

    source§

    impl Default for NullMemory

    source§

    fn default() -> NullMemory

    Returns the “default value” for a type. Read more
    source§

    impl Memory for NullMemory

    source§

    fn read(&mut self, address: u16) -> u8

    Read a byte from this memory at the given address. -Implementations may trigger side effects as a result of this read.
    source§

    fn write(&mut self, address: u16, _value: u8)

    Write a byte to this memory at the given address.
    source§

    fn reset(&mut self)

    Reset this memory to its initial state, e.g. after a system reboot. +NullMemory in libnoentiendo::memory - Rust
    pub struct NullMemory { /* private fields */ }
    Expand description

    Memory that does nothing when read or written to.

    +

    Implementations§

    source§

    impl NullMemory

    source

    pub fn new() -> Self

    Create a new NullMemory that will not warn when read or written to.

    +
    source

    pub fn with_warnings(message: &'static str) -> Self

    Create a new NullMemory that will warn when read or written to.

    +

    Trait Implementations§

    source§

    impl Default for NullMemory

    source§

    fn default() -> NullMemory

    Returns the “default value” for a type. Read more
    source§

    impl Memory for NullMemory

    source§

    fn read(&mut self, address: u16) -> u8

    Read a byte from this memory at the given address. +Implementations may trigger side effects as a result of this read.
    source§

    fn write(&mut self, address: u16, _value: u8)

    Write a byte to this memory at the given address.
    source§

    fn reset(&mut self)

    Reset this memory to its initial state, e.g. after a system reboot. Sometimes this will clear the contents of the memory, like with RAM. -Other times this is a no-op, e.g. for ROM.
    source§

    fn poll(&mut self, _cycles: u32, _info: &SystemInfo) -> ActiveInterrupt

    Poll this memory to see if an interrupt has been triggered. +Other times this is a no-op, e.g. for ROM.
    source§

    fn poll(&mut self, _cycles: u32, _info: &SystemInfo) -> ActiveInterrupt

    Poll this memory to see if an interrupt has been triggered. Implementations may trigger an NMI or IRQ for any -implementation-dependent reason.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +implementation-dependent reason.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/struct.NullPort.html b/doc/libnoentiendo/memory/struct.NullPort.html index 6ce00f5c..06b02b78 100644 --- a/doc/libnoentiendo/memory/struct.NullPort.html +++ b/doc/libnoentiendo/memory/struct.NullPort.html @@ -1,17 +1,17 @@ -NullPort in libnoentiendo::memory - Rust
    pub struct NullPort { /* private fields */ }
    Expand description

    A Port that does nothing.

    -

    Implementations§

    source§

    impl NullPort

    source

    pub fn new() -> Self

    Create a new NullPort that will not warn when read or written to.

    -
    source

    pub fn with_warnings(message: &'static str) -> Self

    Create a new NullPort that will warn when read or written to.

    -

    Trait Implementations§

    source§

    impl Default for NullPort

    source§

    fn default() -> NullPort

    Returns the “default value” for a type. Read more
    source§

    impl Port for NullPort

    source§

    fn read(&mut self) -> u8

    Read a byte from the port. This is implementation-defined, and may have -side effects.
    source§

    fn write(&mut self, _value: u8)

    Write a byte to the port. This is implementation-defined.
    source§

    fn poll(&mut self, _cycles: u32, _info: &SystemInfo) -> bool

    Poll the port for interrupts. A port may trigger an interrupt for any -implementation-defined reason.
    source§

    fn reset(&mut self)

    Reset the port to its initial state, analogous to a system reboot.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +NullPort in libnoentiendo::memory - Rust
    pub struct NullPort { /* private fields */ }
    Expand description

    A Port that does nothing.

    +

    Implementations§

    source§

    impl NullPort

    source

    pub fn new() -> Self

    Create a new NullPort that will not warn when read or written to.

    +
    source

    pub fn with_warnings(message: &'static str) -> Self

    Create a new NullPort that will warn when read or written to.

    +

    Trait Implementations§

    source§

    impl Default for NullPort

    source§

    fn default() -> NullPort

    Returns the “default value” for a type. Read more
    source§

    impl Port for NullPort

    source§

    fn read(&mut self) -> u8

    Read a byte from the port. This is implementation-defined, and may have +side effects.
    source§

    fn write(&mut self, _value: u8)

    Write a byte to the port. This is implementation-defined.
    source§

    fn poll(&mut self, _cycles: u32, _info: &SystemInfo) -> bool

    Poll the port for interrupts. A port may trigger an interrupt for any +implementation-defined reason.
    source§

    fn reset(&mut self)

    Reset the port to its initial state, analogous to a system reboot.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/struct.SystemInfo.html b/doc/libnoentiendo/memory/struct.SystemInfo.html index c0a23c54..428c7c87 100644 --- a/doc/libnoentiendo/memory/struct.SystemInfo.html +++ b/doc/libnoentiendo/memory/struct.SystemInfo.html @@ -1,16 +1,16 @@ -SystemInfo in libnoentiendo::memory - Rust
    pub struct SystemInfo {
    -    pub cycle_count: u64,
    +SystemInfo in libnoentiendo::memory - Rust
    pub struct SystemInfo {
    +    pub cycle_count: u64,
     }
    Expand description

    Information about the system that Memory implementations can use to determine if an interrupt should be triggered.

    -

    Fields§

    §cycle_count: u64

    Trait Implementations§

    source§

    impl Debug for SystemInfo

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SystemInfo

    source§

    fn default() -> SystemInfo

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §cycle_count: u64

    Trait Implementations§

    source§

    impl Debug for SystemInfo

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SystemInfo

    source§

    fn default() -> SystemInfo

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/trait.Memory.html b/doc/libnoentiendo/memory/trait.Memory.html index bc25f285..bb113e13 100644 --- a/doc/libnoentiendo/memory/trait.Memory.html +++ b/doc/libnoentiendo/memory/trait.Memory.html @@ -1,18 +1,18 @@ -Memory in libnoentiendo::memory - Rust
    pub trait Memory {
    +Memory in libnoentiendo::memory - Rust
    pub trait Memory {
         // Required methods
    -    fn read(&mut self, address: u16) -> u8;
    -    fn write(&mut self, address: u16, value: u8);
    +    fn read(&mut self, address: u16) -> u8;
    +    fn write(&mut self, address: u16, value: u8);
         fn reset(&mut self);
    -    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> ActiveInterrupt;
    +    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> ActiveInterrupt;
     }
    Expand description

    Represents a contiguous block of memory which can be read, written, reset, and polled to see if an interrupt has been triggered.

    -

    Required Methods§

    source

    fn read(&mut self, address: u16) -> u8

    Read a byte from this memory at the given address. +

    Required Methods§

    source

    fn read(&mut self, address: u16) -> u8

    Read a byte from this memory at the given address. Implementations may trigger side effects as a result of this read.

    -
    source

    fn write(&mut self, address: u16, value: u8)

    Write a byte to this memory at the given address.

    -
    source

    fn reset(&mut self)

    Reset this memory to its initial state, e.g. after a system reboot. +

    source

    fn write(&mut self, address: u16, value: u8)

    Write a byte to this memory at the given address.

    +
    source

    fn reset(&mut self)

    Reset this memory to its initial state, e.g. after a system reboot. Sometimes this will clear the contents of the memory, like with RAM. Other times this is a no-op, e.g. for ROM.

    -
    source

    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> ActiveInterrupt

    Poll this memory to see if an interrupt has been triggered. +

    source

    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> ActiveInterrupt

    Poll this memory to see if an interrupt has been triggered. Implementations may trigger an NMI or IRQ for any implementation-dependent reason.

    -

    Implementors§

    \ No newline at end of file +

    Implementors§

    \ No newline at end of file diff --git a/doc/libnoentiendo/memory/trait.Port.html b/doc/libnoentiendo/memory/trait.Port.html index 05ae5c20..fe33a5ae 100644 --- a/doc/libnoentiendo/memory/trait.Port.html +++ b/doc/libnoentiendo/memory/trait.Port.html @@ -1,15 +1,15 @@ -Port in libnoentiendo::memory - Rust
    pub trait Port {
    +Port in libnoentiendo::memory - Rust
    pub trait Port {
         // Required methods
    -    fn read(&mut self) -> u8;
    -    fn write(&mut self, value: u8);
    -    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> bool;
    +    fn read(&mut self) -> u8;
    +    fn write(&mut self, value: u8);
    +    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> bool;
         fn reset(&mut self);
     }
    Expand description

    A Port that can be read from, written to, reset, or polled for interrupts. Used in the MOS 6520 PIA and the 6522 VIA.

    -

    Required Methods§

    source

    fn read(&mut self) -> u8

    Read a byte from the port. This is implementation-defined, and may have +

    Required Methods§

    source

    fn read(&mut self) -> u8

    Read a byte from the port. This is implementation-defined, and may have side effects.

    -
    source

    fn write(&mut self, value: u8)

    Write a byte to the port. This is implementation-defined.

    -
    source

    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> bool

    Poll the port for interrupts. A port may trigger an interrupt for any +

    source

    fn write(&mut self, value: u8)

    Write a byte to the port. This is implementation-defined.

    +
    source

    fn poll(&mut self, cycles: u32, info: &SystemInfo) -> bool

    Poll the port for interrupts. A port may trigger an interrupt for any implementation-defined reason.

    -
    source

    fn reset(&mut self)

    Reset the port to its initial state, analogous to a system reboot.

    -

    Implementors§

    \ No newline at end of file +
    source

    fn reset(&mut self)

    Reset the port to its initial state, analogous to a system reboot.

    +

    Implementors§

    \ No newline at end of file diff --git a/doc/libnoentiendo/platform/index.html b/doc/libnoentiendo/platform/index.html index b8fd8be2..61fe162f 100644 --- a/doc/libnoentiendo/platform/index.html +++ b/doc/libnoentiendo/platform/index.html @@ -1,4 +1,4 @@ -libnoentiendo::platform - Rust

    Module libnoentiendo::platform

    source ·
    Expand description

    A platform::Platform consumes a system and runs it. Platforms provide access to the video output, keyboard input, system random number generator, and other details via a platform::PlatformProvider. Some platforms run synchronously (taking over the thread) while others run asynchronously with the help of an event loop (such as when compiling to WASM). Platforms are defined in the platform module. +libnoentiendo::platform - Rust

    Module libnoentiendo::platform

    source ·
    Expand description

    A platform::Platform consumes a system and runs it. Platforms provide access to the video output, keyboard input, system random number generator, and other details via a platform::PlatformProvider. Some platforms run synchronously (taking over the thread) while others run asynchronously with the help of an event loop (such as when compiling to WASM). Platforms are defined in the platform module. Currently, available platforms include TextPlatform for simple headless text-based operation, WinitPlatform for a graphical window on a desktop environment, and CanvasPlatform for drawing to a <canvas> element on the web. In the future, platforms for mobile apps are planned, in addition to a platform for running on a microcontroller (e.g. the RP2040).

    Structs

    • Represents an RGB color with 8 bits per channel.
    • Represents the current state of the connected joystick.
    • Represents a platform which exclusively operates over text mode, without any visible graphical output. This reads from and writes to the @@ -7,4 +7,4 @@ from the platform.
    • A platform implementation for desktop platforms using Winit and Pixels. This platform runs synchronously.

    Traits

    • A platform which can be run asynchronously.
    • A Platform provides platform-specific functionality to the emulator. It handles starting and ticking the system, and provides a PlatformProvider -to the system for screen/keyboard/etc. access.
    • A platform which can be run synchronously.
    \ No newline at end of file +to the system for screen/keyboard/etc. access.
  • A platform which can be run synchronously.
  • \ No newline at end of file diff --git a/doc/libnoentiendo/platform/struct.Color.html b/doc/libnoentiendo/platform/struct.Color.html index 0ddafa4d..dbb63cad 100644 --- a/doc/libnoentiendo/platform/struct.Color.html +++ b/doc/libnoentiendo/platform/struct.Color.html @@ -1,28 +1,28 @@ -Color in libnoentiendo::platform - Rust
    pub struct Color { /* private fields */ }
    Expand description

    Represents an RGB color with 8 bits per channel.

    -

    Implementations§

    source§

    impl Color

    source

    pub fn new(r: u8, g: u8, b: u8) -> Self

    source

    pub fn to_rgba(&self) -> [u8; 4]

    Convert the given color to an array of 4 bytes, where the last byte +Color in libnoentiendo::platform - Rust

    pub struct Color { /* private fields */ }
    Expand description

    Represents an RGB color with 8 bits per channel.

    +

    Implementations§

    source§

    impl Color

    source

    pub fn new(r: u8, g: u8, b: u8) -> Self

    source

    pub fn to_rgba(&self) -> [u8; 4]

    Convert the given color to an array of 4 bytes, where the last byte (alpha) is always 255.

    -
    source

    pub fn to_rgb(&self) -> u32

    Convert the given color to a 32-bit integer, where the top 8 bits are +

    source

    pub fn to_rgb(&self) -> u32

    Convert the given color to a 32-bit integer, where the top 8 bits are unset (0), the next 8 bits are red, the next 8 bits are green, and the last 8 bits are blue.

    -

    Trait Implementations§

    source§

    impl Clone for Color

    source§

    fn clone(&self) -> Color

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Color

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Color

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<Color> for Color

    source§

    fn eq(&self, other: &Color) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for Color

    source§

    impl Eq for Color

    source§

    impl StructuralEq for Color

    source§

    impl StructuralPartialEq for Color

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Color

    §

    impl Send for Color

    §

    impl Sync for Color

    §

    impl Unpin for Color

    §

    impl UnwindSafe for Color

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> CallHasher for Twhere - T: Hash + ?Sized,

    §

    fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64where - H: Hash + ?Sized, - B: BuildHasher,

    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for Color

    source§

    fn clone(&self) -> Color

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Color

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Color

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<Color> for Color

    source§

    fn eq(&self, other: &Color) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for Color

    source§

    impl Eq for Color

    source§

    impl StructuralEq for Color

    source§

    impl StructuralPartialEq for Color

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Color

    §

    impl Send for Color

    §

    impl Sync for Color

    §

    impl Unpin for Color

    §

    impl UnwindSafe for Color

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> CallHasher for Twhere + T: Hash + ?Sized,

    §

    fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64where + H: Hash + ?Sized, + B: BuildHasher,

    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/platform/struct.JoystickState.html b/doc/libnoentiendo/platform/struct.JoystickState.html index 8b71b559..00fb3a33 100644 --- a/doc/libnoentiendo/platform/struct.JoystickState.html +++ b/doc/libnoentiendo/platform/struct.JoystickState.html @@ -1,23 +1,23 @@ -JoystickState in libnoentiendo::platform - Rust
    pub struct JoystickState {
    -    pub up: bool,
    -    pub down: bool,
    -    pub left: bool,
    -    pub right: bool,
    -    pub fire: bool,
    +JoystickState in libnoentiendo::platform - Rust
    pub struct JoystickState {
    +    pub up: bool,
    +    pub down: bool,
    +    pub left: bool,
    +    pub right: bool,
    +    pub fire: bool,
     }
    Expand description

    Represents the current state of the connected joystick.

    -

    Fields§

    §up: bool§down: bool§left: bool§right: bool§fire: bool

    Implementations§

    source§

    impl JoystickState

    source

    pub fn empty() -> Self

    Create a new JoystickState with all buttons released.

    -

    Trait Implementations§

    source§

    impl Clone for JoystickState

    source§

    fn clone(&self) -> JoystickState

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for JoystickState

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq<JoystickState> for JoystickState

    source§

    fn eq(&self, other: &JoystickState) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for JoystickState

    source§

    impl StructuralPartialEq for JoystickState

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §up: bool§down: bool§left: bool§right: bool§fire: bool

    Implementations§

    source§

    impl JoystickState

    source

    pub fn empty() -> Self

    Create a new JoystickState with all buttons released.

    +

    Trait Implementations§

    source§

    impl Clone for JoystickState

    source§

    fn clone(&self) -> JoystickState

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for JoystickState

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq<JoystickState> for JoystickState

    source§

    fn eq(&self, other: &JoystickState) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for JoystickState

    source§

    impl StructuralPartialEq for JoystickState

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/platform/struct.TextPlatform.html b/doc/libnoentiendo/platform/struct.TextPlatform.html index 2072740c..dc91181a 100644 --- a/doc/libnoentiendo/platform/struct.TextPlatform.html +++ b/doc/libnoentiendo/platform/struct.TextPlatform.html @@ -1,16 +1,16 @@ -TextPlatform in libnoentiendo::platform - Rust
    pub struct TextPlatform;
    Expand description

    Represents a platform which exclusively operates over text mode, +TextPlatform in libnoentiendo::platform - Rust

    pub struct TextPlatform;
    Expand description

    Represents a platform which exclusively operates over text mode, without any visible graphical output. This reads from and writes to the terminal. This platform runs synchronously.

    -

    Implementations§

    source§

    impl TextPlatform

    source

    pub fn new() -> Self

    Trait Implementations§

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Implementations§

    source§

    impl TextPlatform

    source

    pub fn new() -> Self

    Trait Implementations§

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/platform/struct.TextPlatformProvider.html b/doc/libnoentiendo/platform/struct.TextPlatformProvider.html index c4690a2a..1b72df63 100644 --- a/doc/libnoentiendo/platform/struct.TextPlatformProvider.html +++ b/doc/libnoentiendo/platform/struct.TextPlatformProvider.html @@ -1,22 +1,22 @@ -TextPlatformProvider in libnoentiendo::platform - Rust
    pub struct TextPlatformProvider;

    Implementations§

    Trait Implementations§

    source§

    impl PlatformProvider for TextPlatformProvider

    source§

    fn request_window(&self, _config: WindowConfig)

    Request that the platform create a window of the specified size, +TextPlatformProvider in libnoentiendo::platform - Rust
    pub struct TextPlatformProvider;

    Implementations§

    Trait Implementations§

    source§

    impl PlatformProvider for TextPlatformProvider

    source§

    fn request_window(&self, _config: WindowConfig)

    Request that the platform create a window of the specified size, with the specified scale factor. If a window already exists, the platform -should resize it to the new size.
    source§

    fn get_key_state(&self) -> KeyState<KeyPosition>

    Get the current state of the user’s physical keyboard.
    source§

    fn get_virtual_key_state(&self) -> KeyState<VirtualKey>

    Get the state of a virtual keyboard (emulating the target system), -if one is available.
    source§

    fn get_joystick_state(&self) -> JoystickState

    Get the current state of the connected joystick. -If no joystick is connected, this should return a default state.
    source§

    fn print(&self, text: &str)

    Display the given string to the user, “out-of-band” from any other +should resize it to the new size.
    source§

    fn get_key_state(&self) -> KeyState<KeyPosition>

    Get the current state of the user’s physical keyboard.
    source§

    fn get_virtual_key_state(&self) -> KeyState<VirtualKey>

    Get the state of a virtual keyboard (emulating the target system), +if one is available.
    source§

    fn get_joystick_state(&self) -> JoystickState

    Get the current state of the connected joystick. +If no joystick is connected, this should return a default state.
    source§

    fn print(&self, text: &str)

    Display the given string to the user, “out-of-band” from any other graphics. This is used for text-mode systems. Implementations may choose -various ways to display this, such as a terminal message or a pop-up.
    source§

    fn input(&self) -> String

    Read a string input from the user, “out-of-band” from any other +various ways to display this, such as a terminal message or a pop-up.
    source§

    fn input(&self) -> String

    Read a string input from the user, “out-of-band” from any other graphics. This is used for text-mode systems. Implementations may choose various ways to prompt for this, such as a terminal prompt or a pop-up -dialog.
    source§

    fn random(&self) -> u8

    Return a random number between 0 and 255. This exists as some platforms -(such as the web) have a different source of randomness.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +dialog.
    source§

    fn random(&self) -> u8

    Return a random number between 0 and 255. This exists as some platforms +(such as the web) have a different source of randomness.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/platform/struct.WindowConfig.html b/doc/libnoentiendo/platform/struct.WindowConfig.html index ef3e3ca8..5f4486c6 100644 --- a/doc/libnoentiendo/platform/struct.WindowConfig.html +++ b/doc/libnoentiendo/platform/struct.WindowConfig.html @@ -1,21 +1,21 @@ -WindowConfig in libnoentiendo::platform - Rust
    pub struct WindowConfig {
    -    pub width: u32,
    -    pub height: u32,
    -    pub scale: f64,
    +WindowConfig in libnoentiendo::platform - Rust
    pub struct WindowConfig {
    +    pub width: u32,
    +    pub height: u32,
    +    pub scale: f64,
     }
    Expand description

    Represents the configuration of a GUI window that the system can request from the platform.

    -

    Fields§

    §width: u32§height: u32§scale: f64

    Implementations§

    source§

    impl WindowConfig

    source

    pub fn new(width: u32, height: u32, scale: f64) -> Self

    Trait Implementations§

    source§

    impl Clone for WindowConfig

    source§

    fn clone(&self) -> WindowConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for WindowConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq<WindowConfig> for WindowConfig

    source§

    fn eq(&self, other: &WindowConfig) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for WindowConfig

    source§

    impl StructuralPartialEq for WindowConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §width: u32§height: u32§scale: f64

    Implementations§

    source§

    impl WindowConfig

    source

    pub fn new(width: u32, height: u32, scale: f64) -> Self

    Trait Implementations§

    source§

    impl Clone for WindowConfig

    source§

    fn clone(&self) -> WindowConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for WindowConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq<WindowConfig> for WindowConfig

    source§

    fn eq(&self, other: &WindowConfig) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for WindowConfig

    source§

    impl StructuralPartialEq for WindowConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/platform/struct.WinitPlatform.html b/doc/libnoentiendo/platform/struct.WinitPlatform.html index 20b27ffd..267e3a91 100644 --- a/doc/libnoentiendo/platform/struct.WinitPlatform.html +++ b/doc/libnoentiendo/platform/struct.WinitPlatform.html @@ -1,14 +1,14 @@ -WinitPlatform in libnoentiendo::platform - Rust
    pub struct WinitPlatform { /* private fields */ }
    Expand description

    A platform implementation for desktop platforms using Winit and Pixels. +WinitPlatform in libnoentiendo::platform - Rust

    pub struct WinitPlatform { /* private fields */ }
    Expand description

    A platform implementation for desktop platforms using Winit and Pixels. This platform runs synchronously.

    -

    Implementations§

    source§

    impl WinitPlatform

    source

    pub fn new() -> Self

    Trait Implementations§

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Implementations§

    source§

    impl WinitPlatform

    source

    pub fn new() -> Self

    Trait Implementations§

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/platform/struct.WinitPlatformProvider.html b/doc/libnoentiendo/platform/struct.WinitPlatformProvider.html index a2c9765d..622ea82e 100644 --- a/doc/libnoentiendo/platform/struct.WinitPlatformProvider.html +++ b/doc/libnoentiendo/platform/struct.WinitPlatformProvider.html @@ -1,26 +1,26 @@ -WinitPlatformProvider in libnoentiendo::platform - Rust
    pub struct WinitPlatformProvider { /* private fields */ }

    Implementations§

    source§

    impl WinitPlatformProvider

    source

    pub fn new( - config: Arc<Mutex<Option<WindowConfig>>>, - key_state: Arc<Mutex<KeyState<VirtualKeyCode>>>, - joystick_state: Arc<Mutex<JoystickState>> -) -> Self

    Trait Implementations§

    source§

    impl PlatformProvider for WinitPlatformProvider

    source§

    fn request_window(&self, config: WindowConfig)

    Request that the platform create a window of the specified size, +WinitPlatformProvider in libnoentiendo::platform - Rust
    pub struct WinitPlatformProvider { /* private fields */ }

    Implementations§

    source§

    impl WinitPlatformProvider

    source

    pub fn new( + config: Arc<Mutex<Option<WindowConfig>>>, + key_state: Arc<Mutex<KeyState<VirtualKeyCode>>>, + joystick_state: Arc<Mutex<JoystickState>> +) -> Self

    Trait Implementations§

    source§

    impl PlatformProvider for WinitPlatformProvider

    source§

    fn request_window(&self, config: WindowConfig)

    Request that the platform create a window of the specified size, with the specified scale factor. If a window already exists, the platform -should resize it to the new size.
    source§

    fn get_key_state(&self) -> KeyState<KeyPosition>

    Get the current state of the user’s physical keyboard.
    source§

    fn get_virtual_key_state(&self) -> KeyState<VirtualKey>

    Get the state of a virtual keyboard (emulating the target system), -if one is available.
    source§

    fn get_joystick_state(&self) -> JoystickState

    Get the current state of the connected joystick. -If no joystick is connected, this should return a default state.
    source§

    fn print(&self, text: &str)

    Display the given string to the user, “out-of-band” from any other +should resize it to the new size.
    source§

    fn get_key_state(&self) -> KeyState<KeyPosition>

    Get the current state of the user’s physical keyboard.
    source§

    fn get_virtual_key_state(&self) -> KeyState<VirtualKey>

    Get the state of a virtual keyboard (emulating the target system), +if one is available.
    source§

    fn get_joystick_state(&self) -> JoystickState

    Get the current state of the connected joystick. +If no joystick is connected, this should return a default state.
    source§

    fn print(&self, text: &str)

    Display the given string to the user, “out-of-band” from any other graphics. This is used for text-mode systems. Implementations may choose -various ways to display this, such as a terminal message or a pop-up.
    source§

    fn input(&self) -> String

    Read a string input from the user, “out-of-band” from any other +various ways to display this, such as a terminal message or a pop-up.
    source§

    fn input(&self) -> String

    Read a string input from the user, “out-of-band” from any other graphics. This is used for text-mode systems. Implementations may choose various ways to prompt for this, such as a terminal prompt or a pop-up -dialog.
    source§

    fn random(&self) -> u8

    Return a random number between 0 and 255. This exists as some platforms -(such as the web) have a different source of randomness.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +dialog.
    source§

    fn random(&self) -> u8

    Return a random number between 0 and 255. This exists as some platforms +(such as the web) have a different source of randomness.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/platform/trait.AsyncPlatform.html b/doc/libnoentiendo/platform/trait.AsyncPlatform.html index d58c6410..3755d9ee 100644 --- a/doc/libnoentiendo/platform/trait.AsyncPlatform.html +++ b/doc/libnoentiendo/platform/trait.AsyncPlatform.html @@ -1,26 +1,26 @@ -AsyncPlatform in libnoentiendo::platform - Rust
    pub trait AsyncPlatform: Platform {
    +AsyncPlatform in libnoentiendo::platform - Rust
    pub trait AsyncPlatform: Platform {
         // Required methods
         fn setup<'life0, 'async_trait>(
             &'life0 mut self
    -    ) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>
    +    ) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>
            where Self: 'async_trait,
                  'life0: 'async_trait;
         fn tick<'life0, 'life1, 'async_trait>(
             &'life0 mut self,
    -        system: &'life1 mut Box<dyn System>
    -    ) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>
    +        system: &'life1 mut Box<dyn System>
    +    ) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>
            where Self: 'async_trait,
                  'life0: 'async_trait,
                  'life1: 'async_trait;
     }
    Expand description

    A platform which can be run asynchronously.

    -

    Required Methods§

    source

    fn setup<'life0, 'async_trait>( +

    Required Methods§

    source

    fn setup<'life0, 'async_trait>( &'life0 mut self -) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>where +) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>where Self: 'async_trait, - 'life0: 'async_trait,

    source

    fn tick<'life0, 'life1, 'async_trait>( + 'life0: 'async_trait,

    source

    fn tick<'life0, 'life1, 'async_trait>( &'life0 mut self, - system: &'life1 mut Box<dyn System> -) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>where + system: &'life1 mut Box<dyn System> +) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, - 'life1: 'async_trait,

    Implementors§

    \ No newline at end of file + 'life1: 'async_trait,

    Implementors§

    \ No newline at end of file diff --git a/doc/libnoentiendo/platform/trait.Platform.html b/doc/libnoentiendo/platform/trait.Platform.html index a6ce0ac1..264f2e3d 100644 --- a/doc/libnoentiendo/platform/trait.Platform.html +++ b/doc/libnoentiendo/platform/trait.Platform.html @@ -1,7 +1,7 @@ -Platform in libnoentiendo::platform - Rust
    pub trait Platform {
    +Platform in libnoentiendo::platform - Rust
    pub trait Platform {
         // Required method
    -    fn provider(&self) -> Arc<dyn PlatformProvider>;
    +    fn provider(&self) -> Arc<dyn PlatformProvider>;
     }
    Expand description

    A Platform provides platform-specific functionality to the emulator. It handles starting and ticking the system, and provides a PlatformProvider to the system for screen/keyboard/etc. access.

    -

    Required Methods§

    Implementors§

    \ No newline at end of file +

    Required Methods§

    Implementors§

    \ No newline at end of file diff --git a/doc/libnoentiendo/platform/trait.PlatformProvider.html b/doc/libnoentiendo/platform/trait.PlatformProvider.html index 744deb9b..1bf5b7e4 100644 --- a/doc/libnoentiendo/platform/trait.PlatformProvider.html +++ b/doc/libnoentiendo/platform/trait.PlatformProvider.html @@ -1,27 +1,27 @@ -PlatformProvider in libnoentiendo::platform - Rust
    pub trait PlatformProvider {
    +PlatformProvider in libnoentiendo::platform - Rust
    pub trait PlatformProvider {
         // Required methods
         fn request_window(&self, config: WindowConfig);
         fn get_key_state(&self) -> KeyState<KeyPosition>;
         fn get_virtual_key_state(&self) -> KeyState<VirtualKey>;
         fn get_joystick_state(&self) -> JoystickState;
    -    fn print(&self, text: &str);
    -    fn input(&self) -> String;
    -    fn random(&self) -> u8;
    -}

    Required Methods§

    source

    fn request_window(&self, config: WindowConfig)

    Request that the platform create a window of the specified size, + fn print(&self, text: &str); + fn input(&self) -> String; + fn random(&self) -> u8; +}

    Required Methods§

    source

    fn request_window(&self, config: WindowConfig)

    Request that the platform create a window of the specified size, with the specified scale factor. If a window already exists, the platform should resize it to the new size.

    -
    source

    fn get_key_state(&self) -> KeyState<KeyPosition>

    Get the current state of the user’s physical keyboard.

    -
    source

    fn get_virtual_key_state(&self) -> KeyState<VirtualKey>

    Get the state of a virtual keyboard (emulating the target system), +

    source

    fn get_key_state(&self) -> KeyState<KeyPosition>

    Get the current state of the user’s physical keyboard.

    +
    source

    fn get_virtual_key_state(&self) -> KeyState<VirtualKey>

    Get the state of a virtual keyboard (emulating the target system), if one is available.

    -
    source

    fn get_joystick_state(&self) -> JoystickState

    Get the current state of the connected joystick. +

    source

    fn get_joystick_state(&self) -> JoystickState

    Get the current state of the connected joystick. If no joystick is connected, this should return a default state.

    -
    source

    fn print(&self, text: &str)

    Display the given string to the user, “out-of-band” from any other +

    source

    fn print(&self, text: &str)

    Display the given string to the user, “out-of-band” from any other graphics. This is used for text-mode systems. Implementations may choose various ways to display this, such as a terminal message or a pop-up.

    -
    source

    fn input(&self) -> String

    Read a string input from the user, “out-of-band” from any other +

    source

    fn input(&self) -> String

    Read a string input from the user, “out-of-band” from any other graphics. This is used for text-mode systems. Implementations may choose various ways to prompt for this, such as a terminal prompt or a pop-up dialog.

    -
    source

    fn random(&self) -> u8

    Return a random number between 0 and 255. This exists as some platforms +

    source

    fn random(&self) -> u8

    Return a random number between 0 and 255. This exists as some platforms (such as the web) have a different source of randomness.

    -

    Implementors§

    \ No newline at end of file +

    Implementors§

    \ No newline at end of file diff --git a/doc/libnoentiendo/platform/trait.SyncPlatform.html b/doc/libnoentiendo/platform/trait.SyncPlatform.html index 5839f514..97d9388a 100644 --- a/doc/libnoentiendo/platform/trait.SyncPlatform.html +++ b/doc/libnoentiendo/platform/trait.SyncPlatform.html @@ -1,5 +1,5 @@ -SyncPlatform in libnoentiendo::platform - Rust
    pub trait SyncPlatform: Platform {
    +SyncPlatform in libnoentiendo::platform - Rust
    pub trait SyncPlatform: Platform {
         // Required method
    -    fn run(&mut self, system: Box<dyn System>);
    +    fn run(&mut self, system: Box<dyn System>);
     }
    Expand description

    A platform which can be run synchronously.

    -

    Required Methods§

    source

    fn run(&mut self, system: Box<dyn System>)

    Implementors§

    \ No newline at end of file +

    Required Methods§

    source

    fn run(&mut self, system: Box<dyn System>)

    Implementors§

    \ No newline at end of file diff --git a/doc/libnoentiendo/roms/index.html b/doc/libnoentiendo/roms/index.html index c913c872..18d48fc0 100644 --- a/doc/libnoentiendo/roms/index.html +++ b/doc/libnoentiendo/roms/index.html @@ -1,3 +1,3 @@ -libnoentiendo::roms - Rust

    Module libnoentiendo::roms

    source ·
    Expand description

    ROM file loading and unloading is different on different platforms: desktop platforms typically load ROMs from a file, while WebAssembly platforms need to load ROMs from a Uint8Array. ROM file definition and loading is handled in the roms module, with specific roms::DiskLoadable and roms::JsValueLoadable traits for these two cases. Loaded ROMs are represented with a roms::RomFile object, which can be passed to memory::BlockMemory::from_file.

    +libnoentiendo::roms - Rust

    Module libnoentiendo::roms

    source ·
    Expand description

    ROM file loading and unloading is different on different platforms: desktop platforms typically load ROMs from a file, while WebAssembly platforms need to load ROMs from a Uint8Array. ROM file definition and loading is handled in the roms module, with specific roms::DiskLoadable and roms::JsValueLoadable traits for these two cases. Loaded ROMs are represented with a roms::RomFile object, which can be passed to memory::BlockMemory::from_file.

    Structs

    • Represents a predefined, immutable ROM file. -Useful for storing character, BASIC, kernal, etc. ROMs.

    Traits

    • Represents a value which can be loaded from a file.
    \ No newline at end of file +Useful for storing character, BASIC, kernal, etc. ROMs.

    Traits

    • Represents a value which can be loaded from a file.
    \ No newline at end of file diff --git a/doc/libnoentiendo/roms/struct.RomFile.html b/doc/libnoentiendo/roms/struct.RomFile.html index 103195e5..417b6db1 100644 --- a/doc/libnoentiendo/roms/struct.RomFile.html +++ b/doc/libnoentiendo/roms/struct.RomFile.html @@ -1,32 +1,32 @@ -RomFile in libnoentiendo::roms - Rust

    Struct libnoentiendo::roms::RomFile

    source ·
    pub struct RomFile { /* private fields */ }
    Expand description

    Represents a predefined, immutable ROM file. +RomFile in libnoentiendo::roms - Rust

    Struct libnoentiendo::roms::RomFile

    source ·
    pub struct RomFile { /* private fields */ }
    Expand description

    Represents a predefined, immutable ROM file. Useful for storing character, BASIC, kernal, etc. ROMs.

    -

    Implementations§

    source§

    impl RomFile

    source

    pub fn new(data: Vec<u8>) -> Self

    Creates a new ROM file from the given data.

    -
    source

    pub fn get_data(self) -> Vec<u8>

    Returns the contents of the ROM file.

    -

    Trait Implementations§

    source§

    impl Clone for RomFile

    source§

    fn clone(&self) -> RomFile

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for RomFile

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl DiskLoadable for RomFile

    source§

    fn from_file(path: &str) -> Self

    Creates a ROM file by loading the contents of a file.
    source§

    impl SystemBuilder<BasicSystem, RomFile, ()> for BasicSystemBuilder

    Implementations§

    source§

    impl RomFile

    source

    pub fn new(data: Vec<u8>) -> Self

    Creates a new ROM file from the given data.

    +
    source

    pub fn get_data(self) -> Vec<u8>

    Returns the contents of the ROM file.

    +

    Trait Implementations§

    source§

    impl Clone for RomFile

    source§

    fn clone(&self) -> RomFile

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for RomFile

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl DiskLoadable for RomFile

    source§

    fn from_file(path: &str) -> Self

    Creates a ROM file by loading the contents of a file.
    source§

    impl SystemBuilder<BasicSystem, RomFile, ()> for BasicSystemBuilder

    source§

    fn build( rom: RomFile, - _config: (), - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.
    source§

    impl SystemBuilder<Easy6502System, RomFile, ()> for Easy6502SystemBuilder

    source§

    fn build( + _config: (), + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.
    source§

    impl SystemBuilder<Easy6502System, RomFile, ()> for Easy6502SystemBuilder

    source§

    fn build( rom: RomFile, - _config: (), - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.
    source§

    impl SystemBuilder<KlausSystem, RomFile, ()> for KlausSystemBuilder

    source§

    fn build( + _config: (), + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.
    source§

    impl SystemBuilder<KlausSystem, RomFile, ()> for KlausSystemBuilder

    source§

    fn build( rom: RomFile, - _config: (), - _platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + _config: (), + _platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>
    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/roms/trait.DiskLoadable.html b/doc/libnoentiendo/roms/trait.DiskLoadable.html index 51353814..2e3ac3ff 100644 --- a/doc/libnoentiendo/roms/trait.DiskLoadable.html +++ b/doc/libnoentiendo/roms/trait.DiskLoadable.html @@ -1,6 +1,6 @@ -DiskLoadable in libnoentiendo::roms - Rust
    pub trait DiskLoadable {
    +DiskLoadable in libnoentiendo::roms - Rust
    pub trait DiskLoadable {
         // Required method
    -    fn from_file(path: &str) -> Self;
    +    fn from_file(path: &str) -> Self;
     }
    Expand description

    Represents a value which can be loaded from a file.

    -

    Required Methods§

    source

    fn from_file(path: &str) -> Self

    Creates a ROM file by loading the contents of a file.

    -

    Implementors§

    \ No newline at end of file +

    Required Methods§

    source

    fn from_file(path: &str) -> Self

    Creates a ROM file by loading the contents of a file.

    +

    Implementors§

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/basic/index.html b/doc/libnoentiendo/systems/basic/index.html index f71a24d4..3bcf352b 100644 --- a/doc/libnoentiendo/systems/basic/index.html +++ b/doc/libnoentiendo/systems/basic/index.html @@ -1 +1 @@ -libnoentiendo::systems::basic - Rust

    Structs

    \ No newline at end of file +libnoentiendo::systems::basic - Rust

    Structs

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/basic/struct.BasicSystem.html b/doc/libnoentiendo/systems/basic/struct.BasicSystem.html index 9f1fb697..95b4252c 100644 --- a/doc/libnoentiendo/systems/basic/struct.BasicSystem.html +++ b/doc/libnoentiendo/systems/basic/struct.BasicSystem.html @@ -1,18 +1,18 @@ -BasicSystem in libnoentiendo::systems::basic - Rust
    pub struct BasicSystem { /* private fields */ }
    Expand description

    A system which only operates in text mode, for basic testing.

    -

    Trait Implementations§

    source§

    impl System for BasicSystem

    source§

    fn tick(&mut self) -> Duration

    Advance the system by one tick.
    source§

    fn reset(&mut self)

    Reset the system’s state.
    source§

    fn render(&mut self, _framebuffer: &mut [u8], _config: WindowConfig)

    Render the current state of the system to the given framebuffer.
    source§

    impl SystemBuilder<BasicSystem, RomFile, ()> for BasicSystemBuilder

    source§

    fn build( +BasicSystem in libnoentiendo::systems::basic - Rust
    pub struct BasicSystem { /* private fields */ }
    Expand description

    A system which only operates in text mode, for basic testing.

    +

    Trait Implementations§

    source§

    impl System for BasicSystem

    source§

    fn tick(&mut self) -> Duration

    Advance the system by one tick.
    source§

    fn reset(&mut self)

    Reset the system’s state.
    source§

    fn render(&mut self, _framebuffer: &mut [u8], _config: WindowConfig)

    Render the current state of the system to the given framebuffer.
    source§

    impl SystemBuilder<BasicSystem, RomFile, ()> for BasicSystemBuilder

    source§

    fn build( rom: RomFile, - _config: (), - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + _config: (), + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/basic/struct.BasicSystemBuilder.html b/doc/libnoentiendo/systems/basic/struct.BasicSystemBuilder.html index b4417d56..cb9cfc7f 100644 --- a/doc/libnoentiendo/systems/basic/struct.BasicSystemBuilder.html +++ b/doc/libnoentiendo/systems/basic/struct.BasicSystemBuilder.html @@ -1,18 +1,18 @@ -BasicSystemBuilder in libnoentiendo::systems::basic - Rust
    pub struct BasicSystemBuilder;
    Expand description

    A factory for creating a BasicSystem.

    -

    Trait Implementations§

    source§

    impl SystemBuilder<BasicSystem, RomFile, ()> for BasicSystemBuilder

    source§

    fn build( +BasicSystemBuilder in libnoentiendo::systems::basic - Rust
    pub struct BasicSystemBuilder;
    Expand description

    A factory for creating a BasicSystem.

    +

    Trait Implementations§

    source§

    impl SystemBuilder<BasicSystem, RomFile, ()> for BasicSystemBuilder

    source§

    fn build( rom: RomFile, - _config: (), - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + _config: (), + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/c64/index.html b/doc/libnoentiendo/systems/c64/index.html index 95874127..899b4ca0 100644 --- a/doc/libnoentiendo/systems/c64/index.html +++ b/doc/libnoentiendo/systems/c64/index.html @@ -1,2 +1,2 @@ -libnoentiendo::systems::c64 - Rust

    Module libnoentiendo::systems::c64

    source ·

    Structs

    \ No newline at end of file +libnoentiendo::systems::c64 - Rust

    Module libnoentiendo::systems::c64

    source ·

    Structs

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/c64/struct.C64BankSwitching.html b/doc/libnoentiendo/systems/c64/struct.C64BankSwitching.html index bd07214b..f9eb784f 100644 --- a/doc/libnoentiendo/systems/c64/struct.C64BankSwitching.html +++ b/doc/libnoentiendo/systems/c64/struct.C64BankSwitching.html @@ -1,16 +1,16 @@ -C64BankSwitching in libnoentiendo::systems::c64 - Rust
    pub struct C64BankSwitching { /* private fields */ }
    Expand description

    Bank switching implementation performed using the 6510’s I/O port. +C64BankSwitching in libnoentiendo::systems::c64 - Rust

    pub struct C64BankSwitching { /* private fields */ }
    Expand description

    Bank switching implementation performed using the 6510’s I/O port. Source: https://www.c64-wiki.com/wiki/Bank_Switching

    -

    Implementations§

    source§

    impl C64BankSwitching

    source

    pub fn new(selectors: [Rc<Cell<usize>>; 6]) -> Self

    Trait Implementations§

    source§

    impl Port for C64BankSwitching

    source§

    fn read(&mut self) -> u8

    Read a byte from the port. This is implementation-defined, and may have -side effects.
    source§

    fn write(&mut self, value: u8)

    Write a byte to the port. This is implementation-defined.
    source§

    fn poll(&mut self, _cycles: u32, _info: &SystemInfo) -> bool

    Poll the port for interrupts. A port may trigger an interrupt for any -implementation-defined reason.
    source§

    fn reset(&mut self)

    Reset the port to its initial state, analogous to a system reboot.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Implementations§

    source§

    impl C64BankSwitching

    source

    pub fn new(selectors: [Rc<Cell<usize>>; 6]) -> Self

    Trait Implementations§

    source§

    impl Port for C64BankSwitching

    source§

    fn read(&mut self) -> u8

    Read a byte from the port. This is implementation-defined, and may have +side effects.
    source§

    fn write(&mut self, value: u8)

    Write a byte to the port. This is implementation-defined.
    source§

    fn poll(&mut self, _cycles: u32, _info: &SystemInfo) -> bool

    Poll the port for interrupts. A port may trigger an interrupt for any +implementation-defined reason.
    source§

    fn reset(&mut self)

    Reset the port to its initial state, analogous to a system reboot.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/c64/struct.C64System.html b/doc/libnoentiendo/systems/c64/struct.C64System.html index 3fff1674..fc6ba210 100644 --- a/doc/libnoentiendo/systems/c64/struct.C64System.html +++ b/doc/libnoentiendo/systems/c64/struct.C64System.html @@ -1,18 +1,18 @@ -C64System in libnoentiendo::systems::c64 - Rust
    pub struct C64System { /* private fields */ }
    Expand description

    The Commodore 64 system.

    -

    Trait Implementations§

    source§

    impl System for C64System

    source§

    fn tick(&mut self) -> Duration

    Advance the system by one tick.
    source§

    fn reset(&mut self)

    Reset the system’s state.
    source§

    fn render(&mut self, framebuffer: &mut [u8], config: WindowConfig)

    Render the current state of the system to the given framebuffer.
    source§

    impl SystemBuilder<C64System, C64SystemRoms, C64SystemConfig> for C64SystemBuilder

    source§

    fn build( +C64System in libnoentiendo::systems::c64 - Rust
    pub struct C64System { /* private fields */ }
    Expand description

    The Commodore 64 system.

    +

    Trait Implementations§

    source§

    impl System for C64System

    source§

    fn tick(&mut self) -> Duration

    Advance the system by one tick.
    source§

    fn reset(&mut self)

    Reset the system’s state.
    source§

    fn render(&mut self, framebuffer: &mut [u8], config: WindowConfig)

    Render the current state of the system to the given framebuffer.
    source§

    impl SystemBuilder<C64System, C64SystemRoms, C64SystemConfig> for C64SystemBuilder

    source§

    fn build( roms: C64SystemRoms, config: C64SystemConfig, - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/c64/struct.C64SystemBuilder.html b/doc/libnoentiendo/systems/c64/struct.C64SystemBuilder.html index 2ceadee2..09143987 100644 --- a/doc/libnoentiendo/systems/c64/struct.C64SystemBuilder.html +++ b/doc/libnoentiendo/systems/c64/struct.C64SystemBuilder.html @@ -1,18 +1,18 @@ -C64SystemBuilder in libnoentiendo::systems::c64 - Rust
    pub struct C64SystemBuilder;
    Expand description

    A factory for creating a Commodore 64 system.

    -

    Trait Implementations§

    source§

    impl SystemBuilder<C64System, C64SystemRoms, C64SystemConfig> for C64SystemBuilder

    source§

    fn build( +C64SystemBuilder in libnoentiendo::systems::c64 - Rust
    pub struct C64SystemBuilder;
    Expand description

    A factory for creating a Commodore 64 system.

    +

    Trait Implementations§

    source§

    impl SystemBuilder<C64System, C64SystemRoms, C64SystemConfig> for C64SystemBuilder

    source§

    fn build( roms: C64SystemRoms, config: C64SystemConfig, - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/c64/struct.C64SystemConfig.html b/doc/libnoentiendo/systems/c64/struct.C64SystemConfig.html index 7cb4f623..b8df0692 100644 --- a/doc/libnoentiendo/systems/c64/struct.C64SystemConfig.html +++ b/doc/libnoentiendo/systems/c64/struct.C64SystemConfig.html @@ -1,20 +1,20 @@ -C64SystemConfig in libnoentiendo::systems::c64 - Rust
    pub struct C64SystemConfig {
    +C64SystemConfig in libnoentiendo::systems::c64 - Rust
    pub struct C64SystemConfig {
         pub mapping: KeyMappingStrategy,
     }
    Expand description

    Configuration for a Commodore 64 system.

    -

    Fields§

    §mapping: KeyMappingStrategy

    Trait Implementations§

    source§

    impl SystemBuilder<C64System, C64SystemRoms, C64SystemConfig> for C64SystemBuilder

    Fields§

    §mapping: KeyMappingStrategy

    Trait Implementations§

    source§

    impl SystemBuilder<C64System, C64SystemRoms, C64SystemConfig> for C64SystemBuilder

    source§

    fn build( roms: C64SystemRoms, config: C64SystemConfig, - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>
    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/c64/struct.C64SystemRoms.html b/doc/libnoentiendo/systems/c64/struct.C64SystemRoms.html index 6d856828..62193681 100644 --- a/doc/libnoentiendo/systems/c64/struct.C64SystemRoms.html +++ b/doc/libnoentiendo/systems/c64/struct.C64SystemRoms.html @@ -1,4 +1,4 @@ -C64SystemRoms in libnoentiendo::systems::c64 - Rust
    pub struct C64SystemRoms {
    +C64SystemRoms in libnoentiendo::systems::c64 - Rust
    pub struct C64SystemRoms {
         pub character: RomFile,
         pub basic: RomFile,
         pub kernal: RomFile,
    @@ -6,20 +6,20 @@
     

    Fields§

    §character: RomFile

    Character ROM. Used to generate the 8x8 character bitmaps.

    §basic: RomFile

    Basic ROM. Contains the BASIC interpreter.

    §kernal: RomFile

    Kernel ROM. Contains the operating system.

    -

    Implementations§

    Trait Implementations§

    source§

    impl SystemBuilder<C64System, C64SystemRoms, C64SystemConfig> for C64SystemBuilder

    Implementations§

    Trait Implementations§

    source§

    impl SystemBuilder<C64System, C64SystemRoms, C64SystemConfig> for C64SystemBuilder

    source§

    fn build( roms: C64SystemRoms, config: C64SystemConfig, - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>
    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/easy/index.html b/doc/libnoentiendo/systems/easy/index.html index 74826c10..146df1a0 100644 --- a/doc/libnoentiendo/systems/easy/index.html +++ b/doc/libnoentiendo/systems/easy/index.html @@ -1,2 +1,2 @@ -libnoentiendo::systems::easy - Rust

    Module libnoentiendo::systems::easy

    source ·

    Structs

    \ No newline at end of file +libnoentiendo::systems::easy - Rust

    Module libnoentiendo::systems::easy

    source ·

    Structs

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/easy/struct.Easy6502System.html b/doc/libnoentiendo/systems/easy/struct.Easy6502System.html index de2146f5..47e8ee5b 100644 --- a/doc/libnoentiendo/systems/easy/struct.Easy6502System.html +++ b/doc/libnoentiendo/systems/easy/struct.Easy6502System.html @@ -1,19 +1,19 @@ -Easy6502System in libnoentiendo::systems::easy - Rust
    pub struct Easy6502System { /* private fields */ }
    Expand description

    A port of the “Easy6502” system from +Easy6502System in libnoentiendo::systems::easy - Rust

    pub struct Easy6502System { /* private fields */ }
    Expand description

    A port of the “Easy6502” system from https://skilldrick.github.io/easy6502/

    -

    Trait Implementations§

    source§

    impl System for Easy6502System

    source§

    fn tick(&mut self) -> Duration

    Advance the system by one tick.
    source§

    fn reset(&mut self)

    Reset the system’s state.
    source§

    fn render(&mut self, framebuffer: &mut [u8], config: WindowConfig)

    Render the current state of the system to the given framebuffer.
    source§

    impl SystemBuilder<Easy6502System, RomFile, ()> for Easy6502SystemBuilder

    Trait Implementations§

    source§

    impl System for Easy6502System

    source§

    fn tick(&mut self) -> Duration

    Advance the system by one tick.
    source§

    fn reset(&mut self)

    Reset the system’s state.
    source§

    fn render(&mut self, framebuffer: &mut [u8], config: WindowConfig)

    Render the current state of the system to the given framebuffer.
    source§

    impl SystemBuilder<Easy6502System, RomFile, ()> for Easy6502SystemBuilder

    source§

    fn build( rom: RomFile, - _config: (), - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + _config: (), + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>
    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/easy/struct.Easy6502SystemBuilder.html b/doc/libnoentiendo/systems/easy/struct.Easy6502SystemBuilder.html index 25d55c51..fc9a0612 100644 --- a/doc/libnoentiendo/systems/easy/struct.Easy6502SystemBuilder.html +++ b/doc/libnoentiendo/systems/easy/struct.Easy6502SystemBuilder.html @@ -1,18 +1,18 @@ -Easy6502SystemBuilder in libnoentiendo::systems::easy - Rust
    pub struct Easy6502SystemBuilder;
    Expand description

    A factory for the Easy6502 system.

    -

    Trait Implementations§

    source§

    impl SystemBuilder<Easy6502System, RomFile, ()> for Easy6502SystemBuilder

    source§

    fn build( +Easy6502SystemBuilder in libnoentiendo::systems::easy - Rust
    pub struct Easy6502SystemBuilder;
    Expand description

    A factory for the Easy6502 system.

    +

    Trait Implementations§

    source§

    impl SystemBuilder<Easy6502System, RomFile, ()> for Easy6502SystemBuilder

    source§

    fn build( rom: RomFile, - _config: (), - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + _config: (), + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/index.html b/doc/libnoentiendo/systems/index.html index 7537bf42..d1ee3613 100644 --- a/doc/libnoentiendo/systems/index.html +++ b/doc/libnoentiendo/systems/index.html @@ -1,2 +1,2 @@ -libnoentiendo::systems - Rust

    Module libnoentiendo::systems

    source ·
    Expand description

    Systems are created by a systems::SystemBuilder. A system is created with some roms, configuration, and platform. For instance, the build implementation on systems::pet::PetSystemBuilder takes in systems::pet::PetSystemRoms, systems::pet::PetSystemConfig, and an Arc<dyn PlatformProvider>.

    -

    Modules

    Traits

    \ No newline at end of file +libnoentiendo::systems - Rust

    Module libnoentiendo::systems

    source ·
    Expand description

    Systems are created by a systems::SystemBuilder. A system is created with some roms, configuration, and platform. For instance, the build implementation on systems::pet::PetSystemBuilder takes in systems::pet::PetSystemRoms, systems::pet::PetSystemConfig, and an Arc<dyn PlatformProvider>.

    +

    Modules

    Traits

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/klaus/index.html b/doc/libnoentiendo/systems/klaus/index.html index d1a9a3e5..1e8c7241 100644 --- a/doc/libnoentiendo/systems/klaus/index.html +++ b/doc/libnoentiendo/systems/klaus/index.html @@ -1 +1 @@ -libnoentiendo::systems::klaus - Rust

    Structs

    • A system used to run Klaus Dormann’s 6502 CPU test suite.
    • A factory for creating a system that runs Klaus Dormann’s 6502 CPU test suite.
    \ No newline at end of file +libnoentiendo::systems::klaus - Rust

    Structs

    • A system used to run Klaus Dormann’s 6502 CPU test suite.
    • A factory for creating a system that runs Klaus Dormann’s 6502 CPU test suite.
    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/klaus/struct.KlausSystem.html b/doc/libnoentiendo/systems/klaus/struct.KlausSystem.html index c8497316..011caa45 100644 --- a/doc/libnoentiendo/systems/klaus/struct.KlausSystem.html +++ b/doc/libnoentiendo/systems/klaus/struct.KlausSystem.html @@ -1,18 +1,18 @@ -KlausSystem in libnoentiendo::systems::klaus - Rust
    pub struct KlausSystem { /* private fields */ }
    Expand description

    A system used to run Klaus Dormann’s 6502 CPU test suite.

    -

    Trait Implementations§

    source§

    impl System for KlausSystem

    source§

    fn tick(&mut self) -> Duration

    Advance the system by one tick.
    source§

    fn reset(&mut self)

    Reset the system’s state.
    source§

    fn render(&mut self, _framebuffer: &mut [u8], _window: WindowConfig)

    Render the current state of the system to the given framebuffer.
    source§

    impl SystemBuilder<KlausSystem, RomFile, ()> for KlausSystemBuilder

    source§

    fn build( +KlausSystem in libnoentiendo::systems::klaus - Rust
    pub struct KlausSystem { /* private fields */ }
    Expand description

    A system used to run Klaus Dormann’s 6502 CPU test suite.

    +

    Trait Implementations§

    source§

    impl System for KlausSystem

    source§

    fn tick(&mut self) -> Duration

    Advance the system by one tick.
    source§

    fn reset(&mut self)

    Reset the system’s state.
    source§

    fn render(&mut self, _framebuffer: &mut [u8], _window: WindowConfig)

    Render the current state of the system to the given framebuffer.
    source§

    impl SystemBuilder<KlausSystem, RomFile, ()> for KlausSystemBuilder

    source§

    fn build( rom: RomFile, - _config: (), - _platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + _config: (), + _platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/klaus/struct.KlausSystemBuilder.html b/doc/libnoentiendo/systems/klaus/struct.KlausSystemBuilder.html index 71434355..10d4fc6e 100644 --- a/doc/libnoentiendo/systems/klaus/struct.KlausSystemBuilder.html +++ b/doc/libnoentiendo/systems/klaus/struct.KlausSystemBuilder.html @@ -1,18 +1,18 @@ -KlausSystemBuilder in libnoentiendo::systems::klaus - Rust
    pub struct KlausSystemBuilder;
    Expand description

    A factory for creating a system that runs Klaus Dormann’s 6502 CPU test suite.

    -

    Trait Implementations§

    source§

    impl SystemBuilder<KlausSystem, RomFile, ()> for KlausSystemBuilder

    source§

    fn build( +KlausSystemBuilder in libnoentiendo::systems::klaus - Rust
    pub struct KlausSystemBuilder;
    Expand description

    A factory for creating a system that runs Klaus Dormann’s 6502 CPU test suite.

    +

    Trait Implementations§

    source§

    impl SystemBuilder<KlausSystem, RomFile, ()> for KlausSystemBuilder

    source§

    fn build( rom: RomFile, - _config: (), - _platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + _config: (), + _platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/pet/enum.PetKeys.html b/doc/libnoentiendo/systems/pet/enum.PetKeys.html index bb33ddc2..f914c36f 100644 --- a/doc/libnoentiendo/systems/pet/enum.PetKeys.html +++ b/doc/libnoentiendo/systems/pet/enum.PetKeys.html @@ -1,4 +1,4 @@ -PetKeys in libnoentiendo::systems::pet - Rust
    pub enum PetKeys {
    +PetKeys in libnoentiendo::systems::pet - Rust
    pub enum PetKeys {
     
    Show 74 variants Exclamation, DoubleQuote, Hash, @@ -75,28 +75,28 @@ Unused,
    }
    Expand description

    The keys found on the PET’s “Graphics” keyboard. Source: https://commons.wikimedia.org/wiki/File:PET_Keyboard.svg

    -

    Variants§

    §

    Exclamation

    §

    DoubleQuote

    §

    Hash

    §

    Dollar

    §

    Percent

    §

    Apostrophe

    §

    Ampersand

    §

    Backslash

    §

    LeftParen

    §

    RightParen

    §

    LeftArrow

    §

    Q

    §

    W

    §

    E

    §

    R

    §

    T

    §

    Y

    §

    U

    §

    I

    §

    O

    §

    P

    §

    UpArrow

    §

    A

    §

    S

    §

    D

    §

    F

    §

    G

    §

    H

    §

    J

    §

    K

    §

    L

    §

    Colon

    §

    Return

    §

    Z

    §

    X

    §

    C

    §

    V

    §

    B

    §

    N

    §

    M

    §

    Comma

    §

    Semicolon

    §

    Question

    §

    LShift

    §

    Reverse

    §

    At

    §

    LeftBracket

    §

    RightBracket

    §

    Space

    §

    LessThan

    §

    GreaterThan

    §

    RunStop

    §

    RShift

    §

    ClrHome

    §

    CursorUpDown

    §

    CursorLeftRight

    §

    InsertDelete

    §

    Num7

    §

    Num8

    §

    Num9

    §

    NumDivide

    §

    Num4

    §

    Num5

    §

    Num6

    §

    NumMultiply

    §

    Num1

    §

    Num2

    §

    Num3

    §

    NumPlus

    §

    Num0

    §

    NumPeriod

    §

    NumMinus

    §

    NumEquals

    §

    Unused

    Trait Implementations§

    source§

    impl Clone for PetKeys

    source§

    fn clone(&self) -> PetKeys

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PetKeys

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for PetKeys

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where - __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Hash for PetKeys

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<PetKeys> for PetKeys

    source§

    fn eq(&self, other: &PetKeys) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for PetKeys

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where - __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Copy for PetKeys

    source§

    impl Eq for PetKeys

    source§

    impl StructuralEq for PetKeys

    source§

    impl StructuralPartialEq for PetKeys

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> CallHasher for Twhere - T: Hash + ?Sized,

    §

    fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64where - H: Hash + ?Sized, - B: BuildHasher,

    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    §

    Exclamation

    §

    DoubleQuote

    §

    Hash

    §

    Dollar

    §

    Percent

    §

    Apostrophe

    §

    Ampersand

    §

    Backslash

    §

    LeftParen

    §

    RightParen

    §

    LeftArrow

    §

    Q

    §

    W

    §

    E

    §

    R

    §

    T

    §

    Y

    §

    U

    §

    I

    §

    O

    §

    P

    §

    UpArrow

    §

    A

    §

    S

    §

    D

    §

    F

    §

    G

    §

    H

    §

    J

    §

    K

    §

    L

    §

    Colon

    §

    Return

    §

    Z

    §

    X

    §

    C

    §

    V

    §

    B

    §

    N

    §

    M

    §

    Comma

    §

    Semicolon

    §

    Question

    §

    LShift

    §

    Reverse

    §

    At

    §

    LeftBracket

    §

    RightBracket

    §

    Space

    §

    LessThan

    §

    GreaterThan

    §

    RunStop

    §

    RShift

    §

    ClrHome

    §

    CursorUpDown

    §

    CursorLeftRight

    §

    InsertDelete

    §

    Num7

    §

    Num8

    §

    Num9

    §

    NumDivide

    §

    Num4

    §

    Num5

    §

    Num6

    §

    NumMultiply

    §

    Num1

    §

    Num2

    §

    Num3

    §

    NumPlus

    §

    Num0

    §

    NumPeriod

    §

    NumMinus

    §

    NumEquals

    §

    Unused

    Trait Implementations§

    source§

    impl Clone for PetKeys

    source§

    fn clone(&self) -> PetKeys

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PetKeys

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for PetKeys

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Hash for PetKeys

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<PetKeys> for PetKeys

    source§

    fn eq(&self, other: &PetKeys) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for PetKeys

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Copy for PetKeys

    source§

    impl Eq for PetKeys

    source§

    impl StructuralEq for PetKeys

    source§

    impl StructuralPartialEq for PetKeys

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> CallHasher for Twhere + T: Hash + ?Sized,

    §

    fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64where + H: Hash + ?Sized, + B: BuildHasher,

    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for Twhere - T: for<'de> Deserialize<'de>,

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for Twhere + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/pet/index.html b/doc/libnoentiendo/systems/pet/index.html index 6a781c18..3f596be6 100644 --- a/doc/libnoentiendo/systems/pet/index.html +++ b/doc/libnoentiendo/systems/pet/index.html @@ -1,6 +1,6 @@ -libnoentiendo::systems::pet - Rust

    Module libnoentiendo::systems::pet

    source ·

    Structs

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/pet/struct.PetPia1PortA.html b/doc/libnoentiendo/systems/pet/struct.PetPia1PortA.html index 2faf5386..f3db348b 100644 --- a/doc/libnoentiendo/systems/pet/struct.PetPia1PortA.html +++ b/doc/libnoentiendo/systems/pet/struct.PetPia1PortA.html @@ -1,18 +1,18 @@ -PetPia1PortA in libnoentiendo::systems::pet - Rust
    pub struct PetPia1PortA { /* private fields */ }
    Expand description

    Port A on the first PIA. +PetPia1PortA in libnoentiendo::systems::pet - Rust

    pub struct PetPia1PortA { /* private fields */ }
    Expand description

    Port A on the first PIA. This is used for generating the 60Hz interrupt (which is fired when the screen drawing reaches the last line), and for setting the active row of the keyboard matrix.

    -

    Implementations§

    source§

    impl PetPia1PortA

    source

    pub fn new() -> Self

    source

    pub fn get_keyboard_row(&self) -> Rc<Cell<u8>>

    Trait Implementations§

    source§

    impl Port for PetPia1PortA

    source§

    fn read(&mut self) -> u8

    Read a byte from the port. This is implementation-defined, and may have -side effects.
    source§

    fn write(&mut self, value: u8)

    Write a byte to the port. This is implementation-defined.
    source§

    fn poll(&mut self, _cycles: u32, info: &SystemInfo) -> bool

    Poll the port for interrupts. A port may trigger an interrupt for any -implementation-defined reason.
    source§

    fn reset(&mut self)

    Reset the port to its initial state, analogous to a system reboot.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Implementations§

    source§

    impl PetPia1PortA

    source

    pub fn new() -> Self

    source

    pub fn get_keyboard_row(&self) -> Rc<Cell<u8>>

    Trait Implementations§

    source§

    impl Port for PetPia1PortA

    source§

    fn read(&mut self) -> u8

    Read a byte from the port. This is implementation-defined, and may have +side effects.
    source§

    fn write(&mut self, value: u8)

    Write a byte to the port. This is implementation-defined.
    source§

    fn poll(&mut self, _cycles: u32, info: &SystemInfo) -> bool

    Poll the port for interrupts. A port may trigger an interrupt for any +implementation-defined reason.
    source§

    fn reset(&mut self)

    Reset the port to its initial state, analogous to a system reboot.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/pet/struct.PetPia1PortB.html b/doc/libnoentiendo/systems/pet/struct.PetPia1PortB.html index 8706c511..0746f116 100644 --- a/doc/libnoentiendo/systems/pet/struct.PetPia1PortB.html +++ b/doc/libnoentiendo/systems/pet/struct.PetPia1PortB.html @@ -1,20 +1,20 @@ -PetPia1PortB in libnoentiendo::systems::pet - Rust
    pub struct PetPia1PortB { /* private fields */ }
    Expand description

    Port B on the first PIA. +PetPia1PortB in libnoentiendo::systems::pet - Rust

    pub struct PetPia1PortB { /* private fields */ }
    Expand description

    Port B on the first PIA. This is used for reading the keyboard matrix.

    -

    Implementations§

    source§

    impl PetPia1PortB

    source

    pub fn new( - keyboard_row: Rc<Cell<u8>>, +

    Implementations§

    source§

    impl PetPia1PortB

    source

    pub fn new( + keyboard_row: Rc<Cell<u8>>, mapping_strategy: KeyMappingStrategy, - platform: Arc<dyn PlatformProvider> -) -> Self

    Trait Implementations§

    source§

    impl Port for PetPia1PortB

    source§

    fn read(&mut self) -> u8

    Read a byte from the port. This is implementation-defined, and may have -side effects.
    source§

    fn write(&mut self, _value: u8)

    Write a byte to the port. This is implementation-defined.
    source§

    fn poll(&mut self, _cycles: u32, _info: &SystemInfo) -> bool

    Poll the port for interrupts. A port may trigger an interrupt for any -implementation-defined reason.
    source§

    fn reset(&mut self)

    Reset the port to its initial state, analogous to a system reboot.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + platform: Arc<dyn PlatformProvider> +) -> Self

    Trait Implementations§

    source§

    impl Port for PetPia1PortB

    source§

    fn read(&mut self) -> u8

    Read a byte from the port. This is implementation-defined, and may have +side effects.
    source§

    fn write(&mut self, _value: u8)

    Write a byte to the port. This is implementation-defined.
    source§

    fn poll(&mut self, _cycles: u32, _info: &SystemInfo) -> bool

    Poll the port for interrupts. A port may trigger an interrupt for any +implementation-defined reason.
    source§

    fn reset(&mut self)

    Reset the port to its initial state, analogous to a system reboot.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/pet/struct.PetSystem.html b/doc/libnoentiendo/systems/pet/struct.PetSystem.html index 3b6c55cd..729cd5fc 100644 --- a/doc/libnoentiendo/systems/pet/struct.PetSystem.html +++ b/doc/libnoentiendo/systems/pet/struct.PetSystem.html @@ -1,18 +1,18 @@ -PetSystem in libnoentiendo::systems::pet - Rust
    pub struct PetSystem { /* private fields */ }
    Expand description

    The Commodore PET system.

    -

    Trait Implementations§

    source§

    impl System for PetSystem

    source§

    fn tick(&mut self) -> Duration

    Advance the system by one tick.
    source§

    fn reset(&mut self)

    Reset the system’s state.
    source§

    fn render(&mut self, framebuffer: &mut [u8], config: WindowConfig)

    Render the current state of the system to the given framebuffer.
    source§

    impl SystemBuilder<PetSystem, PetSystemRoms, PetSystemConfig> for PetSystemBuilder

    source§

    fn build( +PetSystem in libnoentiendo::systems::pet - Rust
    pub struct PetSystem { /* private fields */ }
    Expand description

    The Commodore PET system.

    +

    Trait Implementations§

    source§

    impl System for PetSystem

    source§

    fn tick(&mut self) -> Duration

    Advance the system by one tick.
    source§

    fn reset(&mut self)

    Reset the system’s state.
    source§

    fn render(&mut self, framebuffer: &mut [u8], config: WindowConfig)

    Render the current state of the system to the given framebuffer.
    source§

    impl SystemBuilder<PetSystem, PetSystemRoms, PetSystemConfig> for PetSystemBuilder

    source§

    fn build( roms: PetSystemRoms, config: PetSystemConfig, - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/pet/struct.PetSystemBuilder.html b/doc/libnoentiendo/systems/pet/struct.PetSystemBuilder.html index 9a941062..37084733 100644 --- a/doc/libnoentiendo/systems/pet/struct.PetSystemBuilder.html +++ b/doc/libnoentiendo/systems/pet/struct.PetSystemBuilder.html @@ -1,18 +1,18 @@ -PetSystemBuilder in libnoentiendo::systems::pet - Rust
    pub struct PetSystemBuilder;
    Expand description

    A factory for the Commodore PET.

    -

    Trait Implementations§

    source§

    impl SystemBuilder<PetSystem, PetSystemRoms, PetSystemConfig> for PetSystemBuilder

    source§

    fn build( +PetSystemBuilder in libnoentiendo::systems::pet - Rust
    pub struct PetSystemBuilder;
    Expand description

    A factory for the Commodore PET.

    +

    Trait Implementations§

    source§

    impl SystemBuilder<PetSystem, PetSystemRoms, PetSystemConfig> for PetSystemBuilder

    source§

    fn build( roms: PetSystemRoms, config: PetSystemConfig, - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/pet/struct.PetSystemConfig.html b/doc/libnoentiendo/systems/pet/struct.PetSystemConfig.html index 1ca0239d..10eee889 100644 --- a/doc/libnoentiendo/systems/pet/struct.PetSystemConfig.html +++ b/doc/libnoentiendo/systems/pet/struct.PetSystemConfig.html @@ -1,20 +1,20 @@ -PetSystemConfig in libnoentiendo::systems::pet - Rust
    pub struct PetSystemConfig {
    +PetSystemConfig in libnoentiendo::systems::pet - Rust
    pub struct PetSystemConfig {
         pub mapping: KeyMappingStrategy,
     }
    Expand description

    Configuration for a Commodore PET system.

    -

    Fields§

    §mapping: KeyMappingStrategy

    Trait Implementations§

    source§

    impl SystemBuilder<PetSystem, PetSystemRoms, PetSystemConfig> for PetSystemBuilder

    Fields§

    §mapping: KeyMappingStrategy

    Trait Implementations§

    source§

    impl SystemBuilder<PetSystem, PetSystemRoms, PetSystemConfig> for PetSystemBuilder

    source§

    fn build( roms: PetSystemRoms, config: PetSystemConfig, - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>
    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/pet/struct.PetSystemRoms.html b/doc/libnoentiendo/systems/pet/struct.PetSystemRoms.html index b1b33b96..069b235c 100644 --- a/doc/libnoentiendo/systems/pet/struct.PetSystemRoms.html +++ b/doc/libnoentiendo/systems/pet/struct.PetSystemRoms.html @@ -1,4 +1,4 @@ -PetSystemRoms in libnoentiendo::systems::pet - Rust
    pub struct PetSystemRoms {
    +PetSystemRoms in libnoentiendo::systems::pet - Rust
    pub struct PetSystemRoms {
         pub character: RomFile,
         pub basic: RomFile,
         pub editor: RomFile,
    @@ -8,20 +8,20 @@
     
    §basic: RomFile

    Basic ROM. Contains the BASIC interpreter.

    §editor: RomFile

    Editor ROM. Contains the screen editor functions.

    §kernal: RomFile

    Kernal ROM. Contains the operating system.

    -

    Implementations§

    Trait Implementations§

    source§

    impl SystemBuilder<PetSystem, PetSystemRoms, PetSystemConfig> for PetSystemBuilder

    Implementations§

    Trait Implementations§

    source§

    impl SystemBuilder<PetSystem, PetSystemRoms, PetSystemConfig> for PetSystemBuilder

    source§

    fn build( roms: PetSystemRoms, config: PetSystemConfig, - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>
    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/trait.System.html b/doc/libnoentiendo/systems/trait.System.html index 5baa6124..d79847a1 100644 --- a/doc/libnoentiendo/systems/trait.System.html +++ b/doc/libnoentiendo/systems/trait.System.html @@ -1,10 +1,10 @@ -System in libnoentiendo::systems - Rust
    pub trait System {
    +System in libnoentiendo::systems - Rust
    pub trait System {
         // Required methods
    -    fn tick(&mut self) -> Duration;
    +    fn tick(&mut self) -> Duration;
         fn reset(&mut self);
    -    fn render(&mut self, framebuffer: &mut [u8], window: WindowConfig);
    +    fn render(&mut self, framebuffer: &mut [u8], window: WindowConfig);
     }
    Expand description

    A representation of an emulated system.

    -

    Required Methods§

    source

    fn tick(&mut self) -> Duration

    Advance the system by one tick.

    -
    source

    fn reset(&mut self)

    Reset the system’s state.

    -
    source

    fn render(&mut self, framebuffer: &mut [u8], window: WindowConfig)

    Render the current state of the system to the given framebuffer.

    -

    Implementors§

    \ No newline at end of file +

    Required Methods§

    source

    fn tick(&mut self) -> Duration

    Advance the system by one tick.

    +
    source

    fn reset(&mut self)

    Reset the system’s state.

    +
    source

    fn render(&mut self, framebuffer: &mut [u8], window: WindowConfig)

    Render the current state of the system to the given framebuffer.

    +

    Implementors§

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/trait.SystemBuilder.html b/doc/libnoentiendo/systems/trait.SystemBuilder.html index 8b7a4fff..c844b069 100644 --- a/doc/libnoentiendo/systems/trait.SystemBuilder.html +++ b/doc/libnoentiendo/systems/trait.SystemBuilder.html @@ -1,14 +1,14 @@ -SystemBuilder in libnoentiendo::systems - Rust
    pub trait SystemBuilder<SystemType, RomRegistry, SystemConfig> {
    +SystemBuilder in libnoentiendo::systems - Rust
    pub trait SystemBuilder<SystemType, RomRegistry, SystemConfig> {
         // Required method
         fn build(
             roms: RomRegistry,
             config: SystemConfig,
    -        platform: Arc<dyn PlatformProvider>
    -    ) -> Box<dyn System>;
    -}

    Required Methods§

    source

    fn build( + platform: Arc<dyn PlatformProvider> + ) -> Box<dyn System>; +}

    Required Methods§

    source

    fn build( roms: RomRegistry, config: SystemConfig, - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given platform provider.

    -

    Implementors§

    \ No newline at end of file +

    Implementors§

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/vic/index.html b/doc/libnoentiendo/systems/vic/index.html index 91db9d71..ba859acb 100644 --- a/doc/libnoentiendo/systems/vic/index.html +++ b/doc/libnoentiendo/systems/vic/index.html @@ -1,5 +1,5 @@ -libnoentiendo::systems::vic - Rust

    Module libnoentiendo::systems::vic

    source ·

    Structs

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/vic/struct.Vic20System.html b/doc/libnoentiendo/systems/vic/struct.Vic20System.html index d7713c05..36d85281 100644 --- a/doc/libnoentiendo/systems/vic/struct.Vic20System.html +++ b/doc/libnoentiendo/systems/vic/struct.Vic20System.html @@ -1,18 +1,18 @@ -Vic20System in libnoentiendo::systems::vic - Rust
    pub struct Vic20System { /* private fields */ }
    Expand description

    The VIC-20 system by Commodore.

    -

    Trait Implementations§

    source§

    impl System for Vic20System

    source§

    fn tick(&mut self) -> Duration

    Advance the system by one tick.
    source§

    fn reset(&mut self)

    Reset the system’s state.
    source§

    fn render(&mut self, framebuffer: &mut [u8], _config: WindowConfig)

    Render the current state of the system to the given framebuffer.
    source§

    impl SystemBuilder<Vic20System, Vic20SystemRoms, Vic20SystemConfig> for Vic20SystemBuilder

    source§

    fn build( +Vic20System in libnoentiendo::systems::vic - Rust
    pub struct Vic20System { /* private fields */ }
    Expand description

    The VIC-20 system by Commodore.

    +

    Trait Implementations§

    source§

    impl System for Vic20System

    source§

    fn tick(&mut self) -> Duration

    Advance the system by one tick.
    source§

    fn reset(&mut self)

    Reset the system’s state.
    source§

    fn render(&mut self, framebuffer: &mut [u8], _config: WindowConfig)

    Render the current state of the system to the given framebuffer.
    source§

    impl SystemBuilder<Vic20System, Vic20SystemRoms, Vic20SystemConfig> for Vic20SystemBuilder

    source§

    fn build( roms: Vic20SystemRoms, config: Vic20SystemConfig, - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/vic/struct.Vic20SystemBuilder.html b/doc/libnoentiendo/systems/vic/struct.Vic20SystemBuilder.html index 9b377ff8..07c1da35 100644 --- a/doc/libnoentiendo/systems/vic/struct.Vic20SystemBuilder.html +++ b/doc/libnoentiendo/systems/vic/struct.Vic20SystemBuilder.html @@ -1,18 +1,18 @@ -Vic20SystemBuilder in libnoentiendo::systems::vic - Rust
    pub struct Vic20SystemBuilder;
    Expand description

    A factory for creating a VIC-20 system.

    -

    Trait Implementations§

    source§

    impl SystemBuilder<Vic20System, Vic20SystemRoms, Vic20SystemConfig> for Vic20SystemBuilder

    source§

    fn build( +Vic20SystemBuilder in libnoentiendo::systems::vic - Rust
    pub struct Vic20SystemBuilder;
    Expand description

    A factory for creating a VIC-20 system.

    +

    Trait Implementations§

    source§

    impl SystemBuilder<Vic20System, Vic20SystemRoms, Vic20SystemConfig> for Vic20SystemBuilder

    source§

    fn build( roms: Vic20SystemRoms, config: Vic20SystemConfig, - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/vic/struct.Vic20SystemConfig.html b/doc/libnoentiendo/systems/vic/struct.Vic20SystemConfig.html index 63589b7b..6fa28f98 100644 --- a/doc/libnoentiendo/systems/vic/struct.Vic20SystemConfig.html +++ b/doc/libnoentiendo/systems/vic/struct.Vic20SystemConfig.html @@ -1,20 +1,20 @@ -Vic20SystemConfig in libnoentiendo::systems::vic - Rust
    pub struct Vic20SystemConfig {
    +Vic20SystemConfig in libnoentiendo::systems::vic - Rust
    pub struct Vic20SystemConfig {
         pub mapping: KeyMappingStrategy,
     }
    Expand description

    Configuration for a VIC-20 system.

    -

    Fields§

    §mapping: KeyMappingStrategy

    Trait Implementations§

    source§

    impl SystemBuilder<Vic20System, Vic20SystemRoms, Vic20SystemConfig> for Vic20SystemBuilder

    Fields§

    §mapping: KeyMappingStrategy

    Trait Implementations§

    source§

    impl SystemBuilder<Vic20System, Vic20SystemRoms, Vic20SystemConfig> for Vic20SystemBuilder

    source§

    fn build( roms: Vic20SystemRoms, config: Vic20SystemConfig, - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>
    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/vic/struct.Vic20SystemRoms.html b/doc/libnoentiendo/systems/vic/struct.Vic20SystemRoms.html index 49e9eb8b..6efec2e2 100644 --- a/doc/libnoentiendo/systems/vic/struct.Vic20SystemRoms.html +++ b/doc/libnoentiendo/systems/vic/struct.Vic20SystemRoms.html @@ -1,28 +1,28 @@ -Vic20SystemRoms in libnoentiendo::systems::vic - Rust
    pub struct Vic20SystemRoms {
    +Vic20SystemRoms in libnoentiendo::systems::vic - Rust
    pub struct Vic20SystemRoms {
         pub character: RomFile,
         pub basic: RomFile,
         pub kernal: RomFile,
    -    pub cartridge: Option<RomFile>,
    +    pub cartridge: Option<RomFile>,
     }
    Expand description

    The set of ROM files required to run a VIC-20 system.

    Fields§

    §character: RomFile

    Character ROM. Used to generate the 8x8 character bitmaps.

    §basic: RomFile

    Basic ROM. Contains the BASIC interpreter.

    §kernal: RomFile

    Kernal ROM. Contains the operating system and editor functions.

    -
    §cartridge: Option<RomFile>

    Cartridge ROM. Contains the contents of a cartridge, if one is inserted.

    -

    Implementations§

    source§

    impl Vic20SystemRoms

    source

    pub fn from_disk(cartridge_path: Option<&str>) -> Self

    Load the ROM files from files.

    -

    Trait Implementations§

    source§

    impl SystemBuilder<Vic20System, Vic20SystemRoms, Vic20SystemConfig> for Vic20SystemBuilder

    §cartridge: Option<RomFile>

    Cartridge ROM. Contains the contents of a cartridge, if one is inserted.

    +

    Implementations§

    source§

    impl Vic20SystemRoms

    source

    pub fn from_disk(cartridge_path: Option<&str>) -> Self

    Load the ROM files from files.

    +

    Trait Implementations§

    source§

    impl SystemBuilder<Vic20System, Vic20SystemRoms, Vic20SystemConfig> for Vic20SystemBuilder

    source§

    fn build( roms: Vic20SystemRoms, config: Vic20SystemConfig, - platform: Arc<dyn PlatformProvider> -) -> Box<dyn System>

    Create a new system from the given roms, configuration, and with I/O provided by the given -platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    + platform: Arc<dyn PlatformProvider> +) -> Box<dyn System>
    Create a new system from the given roms, configuration, and with I/O provided by the given +platform provider.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/vic/struct.VicVia1PortA.html b/doc/libnoentiendo/systems/vic/struct.VicVia1PortA.html index 7aca94ff..8f5214d8 100644 --- a/doc/libnoentiendo/systems/vic/struct.VicVia1PortA.html +++ b/doc/libnoentiendo/systems/vic/struct.VicVia1PortA.html @@ -1,17 +1,17 @@ -VicVia1PortA in libnoentiendo::systems::vic - Rust
    pub struct VicVia1PortA { /* private fields */ }
    Expand description

    Port A on the first VIA chip. +VicVia1PortA in libnoentiendo::systems::vic - Rust

    pub struct VicVia1PortA { /* private fields */ }
    Expand description

    Port A on the first VIA chip. This is used to read the state from the joystick.

    -

    Implementations§

    source§

    impl VicVia1PortA

    source

    pub fn new(platform: Arc<dyn PlatformProvider>) -> Self

    source

    pub fn get_joy_pin_3(&self) -> Rc<Cell<bool>>

    Return a reference to the joystick’s pin 3 state.

    -

    Trait Implementations§

    source§

    impl Port for VicVia1PortA

    source§

    fn read(&mut self) -> u8

    Read a byte from the port. This is implementation-defined, and may have -side effects.
    source§

    fn write(&mut self, _value: u8)

    Write a byte to the port. This is implementation-defined.
    source§

    fn poll(&mut self, _cycles: u32, _info: &SystemInfo) -> bool

    Poll the port for interrupts. A port may trigger an interrupt for any -implementation-defined reason.
    source§

    fn reset(&mut self)

    Reset the port to its initial state, analogous to a system reboot.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Implementations§

    source§

    impl VicVia1PortA

    source

    pub fn new(platform: Arc<dyn PlatformProvider>) -> Self

    source

    pub fn get_joy_pin_3(&self) -> Rc<Cell<bool>>

    Return a reference to the joystick’s pin 3 state.

    +

    Trait Implementations§

    source§

    impl Port for VicVia1PortA

    source§

    fn read(&mut self) -> u8

    Read a byte from the port. This is implementation-defined, and may have +side effects.
    source§

    fn write(&mut self, _value: u8)

    Write a byte to the port. This is implementation-defined.
    source§

    fn poll(&mut self, _cycles: u32, _info: &SystemInfo) -> bool

    Poll the port for interrupts. A port may trigger an interrupt for any +implementation-defined reason.
    source§

    fn reset(&mut self)

    Reset the port to its initial state, analogous to a system reboot.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/vic/struct.VicVia2PortA.html b/doc/libnoentiendo/systems/vic/struct.VicVia2PortA.html index 7c8563ea..34ac6a59 100644 --- a/doc/libnoentiendo/systems/vic/struct.VicVia2PortA.html +++ b/doc/libnoentiendo/systems/vic/struct.VicVia2PortA.html @@ -1,22 +1,22 @@ -VicVia2PortA in libnoentiendo::systems::vic - Rust
    pub struct VicVia2PortA { /* private fields */ }
    Expand description

    Port A on the second VIA chip. +VicVia2PortA in libnoentiendo::systems::vic - Rust

    pub struct VicVia2PortA { /* private fields */ }
    Expand description

    Port A on the second VIA chip. This is used to read the active rows on the keyboard matrix.

    -

    Implementations§

    source§

    impl VicVia2PortA

    source

    pub fn new( - keyboard_col: Rc<Cell<u8>>, +

    Implementations§

    source§

    impl VicVia2PortA

    source

    pub fn new( + keyboard_col: Rc<Cell<u8>>, mapping_strategy: KeyMappingStrategy, - platform: Arc<dyn PlatformProvider> + platform: Arc<dyn PlatformProvider> ) -> Self

    Create a new instance of the port, with the given keyboard column, reading the key status from the given platform.

    -

    Trait Implementations§

    source§

    impl Port for VicVia2PortA

    source§

    fn read(&mut self) -> u8

    Read a byte from the port. This is implementation-defined, and may have -side effects.
    source§

    fn write(&mut self, _value: u8)

    Write a byte to the port. This is implementation-defined.
    source§

    fn poll(&mut self, _cycles: u32, _info: &SystemInfo) -> bool

    Poll the port for interrupts. A port may trigger an interrupt for any -implementation-defined reason.
    source§

    fn reset(&mut self)

    Reset the port to its initial state, analogous to a system reboot.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Port for VicVia2PortA

    source§

    fn read(&mut self) -> u8

    Read a byte from the port. This is implementation-defined, and may have +side effects.
    source§

    fn write(&mut self, _value: u8)

    Write a byte to the port. This is implementation-defined.
    source§

    fn poll(&mut self, _cycles: u32, _info: &SystemInfo) -> bool

    Poll the port for interrupts. A port may trigger an interrupt for any +implementation-defined reason.
    source§

    fn reset(&mut self)

    Reset the port to its initial state, analogous to a system reboot.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/libnoentiendo/systems/vic/struct.VicVia2PortB.html b/doc/libnoentiendo/systems/vic/struct.VicVia2PortB.html index 9b62365a..0bb45d46 100644 --- a/doc/libnoentiendo/systems/vic/struct.VicVia2PortB.html +++ b/doc/libnoentiendo/systems/vic/struct.VicVia2PortB.html @@ -1,18 +1,18 @@ -VicVia2PortB in libnoentiendo::systems::vic - Rust
    pub struct VicVia2PortB { /* private fields */ }
    Expand description

    Port B on the second VIA chip. +VicVia2PortB in libnoentiendo::systems::vic - Rust

    pub struct VicVia2PortB { /* private fields */ }
    Expand description

    Port B on the second VIA chip. This is used to set the active columns on the keyboard matrix, and to read the third pin of the joystick.

    -

    Implementations§

    source§

    impl VicVia2PortB

    source

    pub fn new(joy_pin_3: Rc<Cell<bool>>) -> Self

    source

    pub fn get_keyboard_col(&self) -> Rc<Cell<u8>>

    Return a reference to the keyboard column’s current value.

    -

    Trait Implementations§

    source§

    impl Port for VicVia2PortB

    source§

    fn read(&mut self) -> u8

    Read a byte from the port. This is implementation-defined, and may have -side effects.
    source§

    fn write(&mut self, value: u8)

    Write a byte to the port. This is implementation-defined.
    source§

    fn poll(&mut self, _cycles: u32, _info: &SystemInfo) -> bool

    Poll the port for interrupts. A port may trigger an interrupt for any -implementation-defined reason.
    source§

    fn reset(&mut self)

    Reset the port to its initial state, analogous to a system reboot.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Implementations§

    source§

    impl VicVia2PortB

    source

    pub fn new(joy_pin_3: Rc<Cell<bool>>) -> Self

    source

    pub fn get_keyboard_col(&self) -> Rc<Cell<u8>>

    Return a reference to the keyboard column’s current value.

    +

    Trait Implementations§

    source§

    impl Port for VicVia2PortB

    source§

    fn read(&mut self) -> u8

    Read a byte from the port. This is implementation-defined, and may have +side effects.
    source§

    fn write(&mut self, value: u8)

    Write a byte to the port. This is implementation-defined.
    source§

    fn poll(&mut self, _cycles: u32, _info: &SystemInfo) -> bool

    Poll the port for interrupts. A port may trigger an interrupt for any +implementation-defined reason.
    source§

    fn reset(&mut self)

    Reset the port to its initial state, analogous to a system reboot.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/noentiendo_desktop/all.html b/doc/noentiendo_desktop/all.html index b997c1c9..7de9889f 100644 --- a/doc/noentiendo_desktop/all.html +++ b/doc/noentiendo_desktop/all.html @@ -1 +1 @@ -List of all items in this crate

    List of all items

    Structs

    Enums

    Functions

    \ No newline at end of file +List of all items in this crate

    List of all items

    Structs

    Enums

    Functions

    \ No newline at end of file diff --git a/doc/noentiendo_desktop/enum.KeyMappingArg.html b/doc/noentiendo_desktop/enum.KeyMappingArg.html index 677f9679..321b2633 100644 --- a/doc/noentiendo_desktop/enum.KeyMappingArg.html +++ b/doc/noentiendo_desktop/enum.KeyMappingArg.html @@ -1,25 +1,25 @@ -KeyMappingArg in noentiendo_desktop - Rust
    pub(crate) enum KeyMappingArg {
    +KeyMappingArg in noentiendo_desktop - Rust
    pub(crate) enum KeyMappingArg {
         Symbolic,
         Physical,
    -}

    Variants§

    §

    Symbolic

    §

    Physical

    Trait Implementations§

    source§

    impl Clone for KeyMappingArg

    source§

    fn clone(&self) -> KeyMappingArg

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for KeyMappingArg

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Ord for KeyMappingArg

    source§

    fn cmp(&self, other: &KeyMappingArg) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere - Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere - Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq<KeyMappingArg> for KeyMappingArg

    source§

    fn eq(&self, other: &KeyMappingArg) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd<KeyMappingArg> for KeyMappingArg

    source§

    fn partial_cmp(&self, other: &KeyMappingArg) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl ValueEnum for KeyMappingArg

    source§

    fn value_variants<'a>() -> &'a [Self]

    All possible argument values, in display order.
    source§

    fn to_possible_value<'a>(&self) -> Option<PossibleValue<'a>>

    The canonical argument value. Read more
    §

    fn from_str(input: &str, ignore_case: bool) -> Result<Self, String>

    Parse an argument into Self.
    source§

    impl Copy for KeyMappingArg

    source§

    impl Eq for KeyMappingArg

    source§

    impl StructuralEq for KeyMappingArg

    source§

    impl StructuralPartialEq for KeyMappingArg

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +}

    Variants§

    §

    Symbolic

    §

    Physical

    Trait Implementations§

    source§

    impl Clone for KeyMappingArg

    source§

    fn clone(&self) -> KeyMappingArg

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for KeyMappingArg

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Ord for KeyMappingArg

    source§

    fn cmp(&self, other: &KeyMappingArg) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere + Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq<KeyMappingArg> for KeyMappingArg

    source§

    fn eq(&self, other: &KeyMappingArg) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd<KeyMappingArg> for KeyMappingArg

    source§

    fn partial_cmp(&self, other: &KeyMappingArg) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    source§

    impl ValueEnum for KeyMappingArg

    source§

    fn value_variants<'a>() -> &'a [Self]

    All possible argument values, in display order.
    source§

    fn to_possible_value<'a>(&self) -> Option<PossibleValue<'a>>

    The canonical argument value. Read more
    §

    fn from_str(input: &str, ignore_case: bool) -> Result<Self, String>

    Parse an argument into Self.
    source§

    impl Copy for KeyMappingArg

    source§

    impl Eq for KeyMappingArg

    source§

    impl StructuralEq for KeyMappingArg

    source§

    impl StructuralPartialEq for KeyMappingArg

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/noentiendo_desktop/enum.PlatformArg.html b/doc/noentiendo_desktop/enum.PlatformArg.html index f17fee4a..9f7fa97b 100644 --- a/doc/noentiendo_desktop/enum.PlatformArg.html +++ b/doc/noentiendo_desktop/enum.PlatformArg.html @@ -1,25 +1,25 @@ -PlatformArg in noentiendo_desktop - Rust
    pub(crate) enum PlatformArg {
    +PlatformArg in noentiendo_desktop - Rust
    pub(crate) enum PlatformArg {
         Text,
         Winit,
    -}

    Variants§

    §

    Text

    §

    Winit

    Trait Implementations§

    source§

    impl Clone for PlatformArg

    source§

    fn clone(&self) -> PlatformArg

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PlatformArg

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Ord for PlatformArg

    source§

    fn cmp(&self, other: &PlatformArg) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere - Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere - Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq<PlatformArg> for PlatformArg

    source§

    fn eq(&self, other: &PlatformArg) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd<PlatformArg> for PlatformArg

    source§

    fn partial_cmp(&self, other: &PlatformArg) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl ValueEnum for PlatformArg

    source§

    fn value_variants<'a>() -> &'a [Self]

    All possible argument values, in display order.
    source§

    fn to_possible_value<'a>(&self) -> Option<PossibleValue<'a>>

    The canonical argument value. Read more
    §

    fn from_str(input: &str, ignore_case: bool) -> Result<Self, String>

    Parse an argument into Self.
    source§

    impl Copy for PlatformArg

    source§

    impl Eq for PlatformArg

    source§

    impl StructuralEq for PlatformArg

    source§

    impl StructuralPartialEq for PlatformArg

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +}

    Variants§

    §

    Text

    §

    Winit

    Trait Implementations§

    source§

    impl Clone for PlatformArg

    source§

    fn clone(&self) -> PlatformArg

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PlatformArg

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Ord for PlatformArg

    source§

    fn cmp(&self, other: &PlatformArg) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere + Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq<PlatformArg> for PlatformArg

    source§

    fn eq(&self, other: &PlatformArg) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd<PlatformArg> for PlatformArg

    source§

    fn partial_cmp(&self, other: &PlatformArg) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    source§

    impl ValueEnum for PlatformArg

    source§

    fn value_variants<'a>() -> &'a [Self]

    All possible argument values, in display order.
    source§

    fn to_possible_value<'a>(&self) -> Option<PossibleValue<'a>>

    The canonical argument value. Read more
    §

    fn from_str(input: &str, ignore_case: bool) -> Result<Self, String>

    Parse an argument into Self.
    source§

    impl Copy for PlatformArg

    source§

    impl Eq for PlatformArg

    source§

    impl StructuralEq for PlatformArg

    source§

    impl StructuralPartialEq for PlatformArg

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/noentiendo_desktop/enum.SystemArg.html b/doc/noentiendo_desktop/enum.SystemArg.html index 77746e67..0a40baf3 100644 --- a/doc/noentiendo_desktop/enum.SystemArg.html +++ b/doc/noentiendo_desktop/enum.SystemArg.html @@ -1,29 +1,29 @@ -SystemArg in noentiendo_desktop - Rust
    pub(crate) enum SystemArg {
    +SystemArg in noentiendo_desktop - Rust
    pub(crate) enum SystemArg {
         Basic,
         Easy,
         Klaus,
         Pet,
         Vic,
         C64,
    -}

    Variants§

    §

    Basic

    §

    Easy

    §

    Klaus

    §

    Pet

    §

    Vic

    §

    C64

    Trait Implementations§

    source§

    impl Clone for SystemArg

    source§

    fn clone(&self) -> SystemArg

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SystemArg

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Ord for SystemArg

    source§

    fn cmp(&self, other: &SystemArg) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere - Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere - Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq<SystemArg> for SystemArg

    source§

    fn eq(&self, other: &SystemArg) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd<SystemArg> for SystemArg

    source§

    fn partial_cmp(&self, other: &SystemArg) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl ValueEnum for SystemArg

    source§

    fn value_variants<'a>() -> &'a [Self]

    All possible argument values, in display order.
    source§

    fn to_possible_value<'a>(&self) -> Option<PossibleValue<'a>>

    The canonical argument value. Read more
    §

    fn from_str(input: &str, ignore_case: bool) -> Result<Self, String>

    Parse an argument into Self.
    source§

    impl Copy for SystemArg

    source§

    impl Eq for SystemArg

    source§

    impl StructuralEq for SystemArg

    source§

    impl StructuralPartialEq for SystemArg

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +}

    Variants§

    §

    Basic

    §

    Easy

    §

    Klaus

    §

    Pet

    §

    Vic

    §

    C64

    Trait Implementations§

    source§

    impl Clone for SystemArg

    source§

    fn clone(&self) -> SystemArg

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SystemArg

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Ord for SystemArg

    source§

    fn cmp(&self, other: &SystemArg) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere + Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq<SystemArg> for SystemArg

    source§

    fn eq(&self, other: &SystemArg) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd<SystemArg> for SystemArg

    source§

    fn partial_cmp(&self, other: &SystemArg) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    source§

    impl ValueEnum for SystemArg

    source§

    fn value_variants<'a>() -> &'a [Self]

    All possible argument values, in display order.
    source§

    fn to_possible_value<'a>(&self) -> Option<PossibleValue<'a>>

    The canonical argument value. Read more
    §

    fn from_str(input: &str, ignore_case: bool) -> Result<Self, String>

    Parse an argument into Self.
    source§

    impl Copy for SystemArg

    source§

    impl Eq for SystemArg

    source§

    impl StructuralEq for SystemArg

    source§

    impl StructuralPartialEq for SystemArg

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<Q, K> Equivalent<K> for Qwhere + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/noentiendo_desktop/fn.main.html b/doc/noentiendo_desktop/fn.main.html index 6b752f9c..a2824533 100644 --- a/doc/noentiendo_desktop/fn.main.html +++ b/doc/noentiendo_desktop/fn.main.html @@ -1 +1 @@ -main in noentiendo_desktop - Rust

    Function noentiendo_desktop::main

    source ·
    pub(crate) fn main()
    \ No newline at end of file +main in noentiendo_desktop - Rust

    Function noentiendo_desktop::main

    source ·
    pub(crate) fn main()
    \ No newline at end of file diff --git a/doc/noentiendo_desktop/index.html b/doc/noentiendo_desktop/index.html index 825182d6..ccee7213 100644 --- a/doc/noentiendo_desktop/index.html +++ b/doc/noentiendo_desktop/index.html @@ -1 +1 @@ -noentiendo_desktop - Rust
    \ No newline at end of file +noentiendo_desktop - Rust
    \ No newline at end of file diff --git a/doc/noentiendo_desktop/struct.Args.html b/doc/noentiendo_desktop/struct.Args.html index e6f01f89..e1dd3de1 100644 --- a/doc/noentiendo_desktop/struct.Args.html +++ b/doc/noentiendo_desktop/struct.Args.html @@ -1,33 +1,33 @@ -Args in noentiendo_desktop - Rust
    pub(crate) struct Args {
    -    pub(crate) rom_path: String,
    +Args in noentiendo_desktop - Rust
    pub(crate) struct Args {
    +    pub(crate) rom_path: String,
         pub(crate) system: SystemArg,
         pub(crate) platform: PlatformArg,
         pub(crate) key_mapping: KeyMappingArg,
    -}

    Fields§

    §rom_path: String§system: SystemArg§platform: PlatformArg§key_mapping: KeyMappingArg

    Trait Implementations§

    source§

    impl Args for Args

    source§

    fn augment_args<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can instantiate Self. Read more
    source§

    fn augment_args_for_update<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can update self. Read more
    source§

    impl CommandFactory for Args

    source§

    fn into_app<'b>() -> Command<'b>

    Deprecated, replaced with CommandFactory::command
    source§

    fn into_app_for_update<'b>() -> Command<'b>

    Deprecated, replaced with CommandFactory::command_for_update
    §

    fn command<'help>() -> App<'help>

    Build a [Command] that can instantiate Self. Read more
    §

    fn command_for_update<'help>() -> App<'help>

    Build a [Command] that can update self. Read more
    source§

    impl Debug for Args

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl FromArgMatches for Args

    source§

    fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn from_arg_matches_mut( +}

    Fields§

    §rom_path: String§system: SystemArg§platform: PlatformArg§key_mapping: KeyMappingArg

    Trait Implementations§

    source§

    impl Args for Args

    source§

    fn augment_args<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can instantiate Self. Read more
    source§

    fn augment_args_for_update<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can update self. Read more
    source§

    impl CommandFactory for Args

    source§

    fn into_app<'b>() -> Command<'b>

    Deprecated, replaced with CommandFactory::command
    source§

    fn into_app_for_update<'b>() -> Command<'b>

    Deprecated, replaced with CommandFactory::command_for_update
    §

    fn command<'help>() -> App<'help>

    Build a [Command] that can instantiate Self. Read more
    §

    fn command_for_update<'help>() -> App<'help>

    Build a [Command] that can update self. Read more
    source§

    impl Debug for Args

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl FromArgMatches for Args

    source§

    fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn from_arg_matches_mut( __clap_arg_matches: &mut ArgMatches -) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn update_from_arg_matches( +) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn update_from_arg_matches( &mut self, __clap_arg_matches: &ArgMatches -) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    fn update_from_arg_matches_mut( +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    fn update_from_arg_matches_mut( &mut self, __clap_arg_matches: &mut ArgMatches -) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    impl Parser for Args

    §

    fn parse() -> Self

    Parse from std::env::args_os(), exit on error
    §

    fn try_parse() -> Result<Self, Error>

    Parse from std::env::args_os(), return Err on error.
    §

    fn parse_from<I, T>(itr: I) -> Selfwhere - I: IntoIterator<Item = T>, - T: Into<OsString> + Clone,

    Parse from iterator, exit on error
    §

    fn try_parse_from<I, T>(itr: I) -> Result<Self, Error>where - I: IntoIterator<Item = T>, - T: Into<OsString> + Clone,

    Parse from iterator, return Err on error.
    §

    fn update_from<I, T>(&mut self, itr: I)where - I: IntoIterator<Item = T>, - T: Into<OsString> + Clone,

    Update from iterator, exit on error
    §

    fn try_update_from<I, T>(&mut self, itr: I) -> Result<(), Error>where - I: IntoIterator<Item = T>, - T: Into<OsString> + Clone,

    Update from iterator, return Err on error.

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Args

    §

    impl Send for Args

    §

    impl Sync for Args

    §

    impl Unpin for Args

    §

    impl UnwindSafe for Args

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    +) -> Result<(), Error>
    Assign values from ArgMatches to self.
    source§

    impl Parser for Args

    §

    fn parse() -> Self

    Parse from std::env::args_os(), exit on error
    §

    fn try_parse() -> Result<Self, Error>

    Parse from std::env::args_os(), return Err on error.
    §

    fn parse_from<I, T>(itr: I) -> Selfwhere + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Parse from iterator, exit on error
    §

    fn try_parse_from<I, T>(itr: I) -> Result<Self, Error>where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Parse from iterator, return Err on error.
    §

    fn update_from<I, T>(&mut self, itr: I)where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Update from iterator, exit on error
    §

    fn try_update_from<I, T>(&mut self, itr: I) -> Result<(), Error>where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Update from iterator, return Err on error.

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Args

    §

    impl Send for Args

    §

    impl Sync for Args

    §

    impl Unpin for Args

    §

    impl UnwindSafe for Args

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Downcast<T> for T

    §

    fn downcast(&self) -> &T

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> Upcast<T> for T

    §

    fn upcast(&self) -> Option<&T>

    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/doc/search-index.js b/doc/search-index.js index e9c56bc1..d60fac0f 100644 --- a/doc/search-index.js +++ b/doc/search-index.js @@ -1,6 +1,6 @@ var searchIndex = JSON.parse('{\ -"libnoentiendo":{"doc":"noentiendo","t":"AAAAAAIIDILLLLLKLLMLKLKLKLKLKLKLMLLLLLLLKLKLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIEEDENNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNDNNNNNNNENNNNLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNDEDDNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLEDDDNIDNNDDIDLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLKKLLLLLLLKKLLLLLLKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKLLLLLLNNDNDNNDDNNDDEENDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIDDIIIDDDDDLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLMLLLLLLLLLLLKLLKLLKLLLMKLLLLLLLLLMLLLLLLKLLKLLKLLKLLMKLLMKKLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLMIDLLLLLLLKLLLLLLLLLLIIAKAAAAKKKADDLLLLLLLLLLLLLLLLLLLLLLLLDDDDDMLLLLLLLLLLLMLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNEDDDDDDNNNNNNNNNNNNNNNNNNNNNMLLLLLLLLLLLLLLLMLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDDDDDMLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["cpu","keyboard","memory","platform","roms","systems","InterruptHandler","MemoryIO","Mos6502","Stack","borrow","borrow_mut","downcast","from","get_info","interrupt","interrupt","into","memory","new","pop","pop","pop_word","pop_word","push","push","push_word","push_word","read","read","read_word","read_word","registers","reset","tick","try_from","try_into","type_id","upcast","vzip","write","write","write_word","write_word","A","Apostrophe","B","Backslash","Backspace","Backspace","C","CapsLock","CapsLock","Char","Comma","Commodore","CommodorePet","D","Delete","Delete","Digit0","Digit1","Digit2","Digit3","Digit4","Digit5","Digit6","Digit7","Digit8","Digit9","DownArrow","DownArrow","E","End","End","Enter","Equals","Escape","Escape","F","F1","F1","F10","F10","F11","F11","F12","F12","F2","F2","F3","F3","F4","F4","F5","F5","F6","F6","F7","F7","F8","F8","F9","F9","G","Grave","H","Home","Home","I","Insert","Insert","Interrupt","J","K","KeyAdapter","KeyMappingStrategy","KeyPosition","KeyState","KeySymbol","L","LAlt","LAlt","LControl","LControl","LShift","LShift","LSuper","LSuper","LeftArrow","LeftArrow","LeftBracket","M","Menu","Menu","Minus","N","Num0","Num1","Num2","Num3","Num4","Num5","Num6","Num7","Num8","Num9","NumDivide","NumEnter","NumLock","NumLock","NumMinus","NumMultiply","NumPeriod","NumPlus","O","P","PageDown","PageDown","PageUp","PageUp","Pause","Pause","Period","Physical","PrintScreen","PrintScreen","Q","R","RAlt","RAlt","RControl","RControl","RShift","RShift","RSuper","RSuper","Return","RightArrow","RightArrow","RightBracket","S","ScrollLock","ScrollLock","Semicolon","Slash","Space","SymbolAdapter","Symbolic","T","Tab","U","UpArrow","UpArrow","V","VirtualKey","W","X","Y","Z","bitor","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","commodore","default","deserialize","downcast","downcast","downcast","downcast","downcast","downcast","eq","eq","eq","eq","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","from","from","from","from","from","from","get_hash","get_hash","get_hash","hash","hash","hash","into","into","into","into","into","into","is_pressed","map","map","new","press","pressed","release","serialize","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast","upcast","vzip","vzip","vzip","vzip","vzip","vzip","A","Asterisk","At","B","C","C64KeyboardAdapter","C64Keys","C64SymbolAdapter","C64VirtualAdapter","ClrHome","Colon","Comma","Commodore","Control","CursorLeftRight","CursorUpDown","D","Digit0","Digit1","Digit2","Digit3","Digit4","Digit5","Digit6","Digit7","Digit8","Digit9","E","Equals","F","F1","F3","F5","F7","G","H","I","InsertDelete","J","K","L","LShift","LeftArrow","M","Minus","N","O","P","Period","Plus","Pound","Q","R","RShift","Restore","Return","RunStop","S","Semicolon","ShiftLock","Slash","Space","T","U","UpArrow","V","W","X","Y","Z","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deserialize","downcast","downcast","downcast","downcast","eq","equivalent","fmt","from","from","from","from","get_hash","hash","into","into","into","into","map","map","map","serialize","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","vzip","vzip","vzip","vzip","ActiveInterrupt","BankedMemory","BlockMemory","BranchMemory","IRQ","Memory","Mos6510Port","NMI","None","NullMemory","NullPort","Port","SystemInfo","bank","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cycle_count","default","default","default","default","downcast","downcast","downcast","downcast","downcast","downcast","downcast","downcast","eq","equivalent","fmt","fmt","from","from","from","from","from","from","from","from","from_file","into","into","into","into","into","into","into","into","map","mos652x","new","new","new","new","new","poll","poll","poll","poll","poll","poll","poll","poll","ram","read","read","read","read","read","read","read","read","reset","reset","reset","reset","reset","reset","reset","reset","rom","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","with_warnings","with_warnings","write","write","write","write","write","write","write","write","Chained","ChainedCount","Cia","Count","InterruptRegister","None","Phi2","Pia","PortRegisters","Pulse","PulseCount","ShiftRegister","Timer","TimerClockSource","TimerOutput","Toggle","Via","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","downcast","downcast","downcast","downcast","downcast","downcast","downcast","downcast","downcast","from","from","from","from","from","from","from","from","from","interrupt_enable","into","into","into","into","into","into","into","into","into","is_enabled","new","new","new","new","new","new","poll","poll","poll","poll","poll","read","read","read","read","read_enable","read_flags","reset","reset","reset","reset","reset","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","write","write","write","write","write_enable","AsyncPlatform","Color","JoystickState","Platform","PlatformProvider","SyncPlatform","TextPlatform","TextPlatformProvider","WindowConfig","WinitPlatform","WinitPlatformProvider","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","down","downcast","downcast","downcast","downcast","downcast","downcast","downcast","empty","eq","eq","eq","equivalent","fire","fmt","fmt","fmt","from","from","from","from","from","from","from","get_hash","get_joystick_state","get_joystick_state","get_joystick_state","get_key_state","get_key_state","get_key_state","get_virtual_key_state","get_virtual_key_state","get_virtual_key_state","hash","height","input","input","input","into","into","into","into","into","into","into","left","new","new","new","new","new","new","print","print","print","provider","provider","provider","random","random","random","request_window","request_window","request_window","right","run","run","run","scale","setup","tick","to_owned","to_owned","to_owned","to_rgb","to_rgba","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","up","upcast","upcast","upcast","upcast","upcast","upcast","upcast","vzip","vzip","vzip","vzip","vzip","vzip","vzip","width","DiskLoadable","RomFile","borrow","borrow_mut","clone","clone_into","downcast","fmt","from","from_file","from_file","get_data","into","new","to_owned","try_from","try_into","type_id","upcast","vzip","System","SystemBuilder","basic","build","c64","easy","klaus","pet","render","reset","tick","vic","BasicSystem","BasicSystemBuilder","borrow","borrow","borrow_mut","borrow_mut","build","downcast","downcast","from","from","into","into","render","reset","tick","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","vzip","vzip","C64BankSwitching","C64System","C64SystemBuilder","C64SystemConfig","C64SystemRoms","basic","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","character","downcast","downcast","downcast","downcast","downcast","from","from","from","from","from","from_disk","into","into","into","into","into","kernal","mapping","new","poll","read","render","reset","reset","tick","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast","vzip","vzip","vzip","vzip","vzip","write","Easy6502System","Easy6502SystemBuilder","borrow","borrow","borrow_mut","borrow_mut","build","downcast","downcast","from","from","into","into","render","reset","tick","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","vzip","vzip","KlausSystem","KlausSystemBuilder","borrow","borrow","borrow_mut","borrow_mut","build","downcast","downcast","from","from","into","into","render","reset","tick","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","vzip","vzip","A","Ampersand","Apostrophe","At","B","Backslash","C","ClrHome","Colon","Comma","CursorLeftRight","CursorUpDown","D","Dollar","DoubleQuote","E","Exclamation","F","G","GreaterThan","H","Hash","I","InsertDelete","J","K","L","LShift","LeftArrow","LeftBracket","LeftParen","LessThan","M","N","Num0","Num1","Num2","Num3","Num4","Num5","Num6","Num7","Num8","Num9","NumDivide","NumEquals","NumMinus","NumMultiply","NumPeriod","NumPlus","O","P","Percent","PetKeys","PetPia1PortA","PetPia1PortB","PetSystem","PetSystemBuilder","PetSystemConfig","PetSystemRoms","Q","Question","R","RShift","Return","Reverse","RightBracket","RightParen","RunStop","S","Semicolon","Space","T","U","Unused","UpArrow","V","W","X","Y","Z","basic","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","character","clone","clone_into","deserialize","downcast","downcast","downcast","downcast","downcast","downcast","downcast","editor","eq","equivalent","fmt","from","from","from","from","from","from","from","from_disk","get_hash","get_keyboard_row","hash","into","into","into","into","into","into","into","kernal","mapping","new","new","poll","poll","read","read","render","reset","reset","reset","serialize","tick","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast","upcast","upcast","vzip","vzip","vzip","vzip","vzip","vzip","vzip","write","write","Vic20System","Vic20SystemBuilder","Vic20SystemConfig","Vic20SystemRoms","VicVia1PortA","VicVia2PortA","VicVia2PortB","basic","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","cartridge","character","downcast","downcast","downcast","downcast","downcast","downcast","downcast","from","from","from","from","from","from","from","from_disk","get_joy_pin_3","get_keyboard_col","into","into","into","into","into","into","into","kernal","mapping","new","new","new","poll","poll","poll","read","read","read","render","reset","reset","reset","reset","tick","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast","upcast","upcast","vzip","vzip","vzip","vzip","vzip","vzip","vzip","write","write","write"],"q":["libnoentiendo","","","","","","libnoentiendo::cpu","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","libnoentiendo::keyboard","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","libnoentiendo::keyboard::commodore","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","libnoentiendo::memory","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","libnoentiendo::memory::mos652x","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","libnoentiendo::platform","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","libnoentiendo::roms","","","","","","","","","","","","","","","","","","","","libnoentiendo::systems","","","","","","","","","","","","libnoentiendo::systems::basic","","","","","","","","","","","","","","","","","","","","","","","","","","libnoentiendo::systems::c64","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","libnoentiendo::systems::easy","","","","","","","","","","","","","","","","","","","","","","","","","","libnoentiendo::systems::klaus","","","","","","","","","","","","","","","","","","","","","","","","","","libnoentiendo::systems::pet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","libnoentiendo::systems::vic","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["The cpu::Mos6502 represents a 6502 processor and …","Various representations of keyboard scancodes are required …","A memory::Memory implementation can be read from and …","A platform::Platform consumes a system and runs it. …","ROM file loading and unloading is different on different …","Systems are created by a systems::SystemBuilder. A system …","Handle interrupts by setting the applicable flags, pushing …","Read and write from the system’s memory.","The MOS 6502 CPU and its associated memory.","Push and pop values from the stack.","","","","Returns the argument unchanged.","Return a SystemInfo struct containing the current system …","","","Calls U::from(self).","","","Pop a byte from the stack.","","Pop a word (little-endian) from the stack.","","Push a byte onto the stack.","","Push a word (little-endian) onto the stack.","","Read a byte from the given address in memory.","","Read a word (little-endian) from the given address in …","","","","Execute a single instruction.","","","","","","Write a byte to the given address in memory.","","Write a word (little-endian) to the given address in …","","","","","","","","","","","Alphanumeric or symbol keys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Represents a mapping from a key state of one type to a key …","Represents different approaches to mapping key states, to …","A representation for a position on a modern keyboard. …","A set of keys that are currently pressed. Parameter T is …","A representation for a symbol on a modern keyboard.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Preserve physical keys one-to-one. This is most …","","","","","","","","","","","","","","","","","","","","","","","An adapter that maps physical key positions to symbols.","Preserve symbols one-to-one. This is more intuitive, but …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Keys and adapters for the Commodore 64, VIC-20, and other …","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if the given key is currently pressed.","Map the current state of the keyboard with symbols of type …","","Creates a new, empty key state.","Adds a key to the set of pressed keys.","Return the set of pressed keys.","Removes a key from the set of pressed keys.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","An adapter for mapping positions on a standard keyboard to …","Keys found on a VIC-20 or Commodore 64 keyboard.","An adapter for mapping symbols pressed on a standard …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","Represents the state of the interrupts on the system.","Represents the memory banking features found in the …","Represents a simple block of contiguous memory, with no …","Maps several Memory objects into a single contiguous …","An IRQ (maskable interrupt request) is active.","Represents a contiguous block of memory which can be read, …","Represents the port built into a MOS 6510 processor, …","An NMI (non-maskable interrupt) is active.","No interrupts are active.","Memory that does nothing when read or written to.","A Port that does nothing.","A Port that can be read from, written to, reset, or polled …","Information about the system that Memory implementations …","Add a new memory implementation to the banked memory.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Create a BlockMemory of the given size which loads its …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Map a new Memory object to the given starting address in …","The various interface adapters (6520, 6522, 6526) for the …","Create a new, empty banked memory.","Create a new MOS 6510 port with the given port.","Create a new BranchMemory with no mappings.","Create a new NullMemory that will not warn when read or …","Create a new NullPort that will not warn when read or …","Poll the port for interrupts. A port may trigger an …","Poll this memory to see if an interrupt has been triggered.","","","","","","","Create a BlockMemory of the given size which clears its …","Read a byte from the port. This is implementation-defined, …","Read a byte from this memory at the given address. …","","","","","","","Reset the port to its initial state, analogous to a system …","Reset this memory to its initial state, e.g. after a …","","","","","","","Create a BlockMemory of the given size which does not …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new NullMemory that will warn when read or …","Create a new NullPort that will warn when read or written …","Write a byte to the port. This is implementation-defined.","Write a byte to this memory at the given address.","","","","","","","Count underflows of the other timer.","Count underflows of the other timer, but only if the CNT …","The MOS 6526 Complex Interface Adapter (CIA). Contains two …","Use pulses on the external CNT pin.","Registers for interrupt flags and interrupt enable bits. …","The timer will not output to the port.","Use the internal system clock.","The MOS 6520 Peripheral Interface Adapter (PIA), …","A port and its associated registers on the MOS 6522 VIA or …","The timer will output a single pulse on PB6 or PB7.","The timer will output a set number of pulses.","The shift register used by the MOS 6522 VIA and MOS 6526 …","A timer circuit on the MOS 6522 VIA or MOS 6526 CIA.","The source of the timer’s clock, which controls the rate …","The manner in which the timer will output signals to the …","The timer will toggle the output on PB6 or PB7.","The MOS 6522 Versatile Interface Adapter (VIA). Contains …","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","The current state of which interrupts are enabled. If a …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Is the specified interrupt enabled?","","Create a new PIA with the two given port implementations.","","","","","","","","Poll the underlying port for interrupts.","Poll the timer (decrement the counter, fire the interrupt …","","","","Read from the port, respecting the DDR.","Read the value of the interrupt enable register.","Read the apparent value of the interrupt register, based …","","","","Reset the port to its initial state.","Reset the shift register’s internal state.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Write to the port, respecting the DDR.","Write to the interrupt enable register.","A platform which can be run asynchronously.","Represents an RGB color with 8 bits per channel.","Represents the current state of the connected joystick.","A Platform provides platform-specific functionality to the …","","A platform which can be run synchronously.","Represents a platform which exclusively operates over text …","","Represents the configuration of a GUI window that the …","A platform implementation for desktop platforms using …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new JoystickState with all buttons released.","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Get the current state of the connected joystick. If no …","","","Get the current state of the user’s physical keyboard.","","","Get the state of a virtual keyboard (emulating the target …","","","","","Read a string input from the user, “out-of-band” from …","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","Display the given string to the user, “out-of-band” …","","","","","","Return a random number between 0 and 255. This exists as …","","","Request that the platform create a window of the specified …","","","","","","","","","","","","","Convert the given color to a 32-bit integer, where the top …","Convert the given color to an array of 4 bytes, where the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Represents a value which can be loaded from a file.","Represents a predefined, immutable ROM file. Useful for …","","","","","","","Returns the argument unchanged.","Creates a ROM file by loading the contents of a file.","","Returns the contents of the ROM file.","Calls U::from(self).","Creates a new ROM file from the given data.","","","","","","","A representation of an emulated system.","","","Create a new system from the given roms, configuration, …","","","","","Render the current state of the system to the given …","Reset the system’s state.","Advance the system by one tick.","","A system which only operates in text mode, for basic …","A factory for creating a BasicSystem.","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","Bank switching implementation performed using the 6510’s …","The Commodore 64 system.","A factory for creating a Commodore 64 system.","Configuration for a Commodore 64 system.","The set of ROM files required to run a Commodore 64 system.","Basic ROM. Contains the BASIC interpreter.","","","","","","","","","","","","Character ROM. Used to generate the 8x8 character bitmaps.","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Kernel ROM. Contains the operating system.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A port of the “Easy6502” system from …","A factory for the Easy6502 system.","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","A system used to run Klaus Dormann’s 6502 CPU test suite.","A factory for creating a system that runs Klaus Dormann’…","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The keys found on the PET’s “Graphics” keyboard. …","Port A on the first PIA. This is used for generating the …","Port B on the first PIA. This is used for reading the …","The Commodore PET system.","A factory for the Commodore PET.","Configuration for a Commodore PET system.","The set of ROM files required to run a PET system.","","","","","","","","","","","","","","","","","","","","","","Basic ROM. Contains the BASIC interpreter.","","","","","","","","","","","","","","","","Character ROM. Used to generate the 8x8 character bitmaps.","","","","","","","","","","","Editor ROM. Contains the screen editor functions.","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Kernal ROM. Contains the operating system.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The VIC-20 system by Commodore.","A factory for creating a VIC-20 system.","Configuration for a VIC-20 system.","The set of ROM files required to run a VIC-20 system.","Port A on the first VIA chip. This is used to read the …","Port A on the second VIA chip. This is used to read the …","Port B on the second VIA chip. This is used to set the …","Basic ROM. Contains the BASIC interpreter.","","","","","","","","","","","","","","","","Cartridge ROM. Contains the contents of a cartridge, if …","Character ROM. Used to generate the 8x8 character bitmaps.","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Load the ROM files from files.","Return a reference to the joystick’s pin 3 state.","Return a reference to the keyboard column’s current …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Kernal ROM. Contains the operating system and editor …","","","","Create a new instance of the port, with the given keyboard …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,82,1,1,1,1,83,1,83,1,83,1,83,1,84,1,84,1,1,1,1,1,1,1,1,1,84,1,84,1,13,13,13,13,13,14,13,13,14,14,13,15,15,13,13,14,13,13,13,13,13,13,13,13,13,13,13,14,13,13,14,13,13,13,14,13,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,13,13,13,14,13,13,14,14,13,13,0,0,0,0,0,13,13,14,13,14,13,14,13,14,13,14,13,13,13,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,13,13,13,13,13,13,13,14,13,14,13,14,13,73,13,14,13,13,13,14,13,14,13,14,13,14,14,13,14,13,13,13,14,13,13,13,0,73,13,13,13,13,14,13,0,13,13,13,13,12,85,73,13,14,15,12,85,73,13,14,15,12,13,14,15,12,13,14,15,12,0,12,15,85,73,13,14,15,12,13,14,15,12,13,14,15,13,14,15,12,85,73,13,14,15,12,13,14,15,13,14,15,85,73,13,14,15,12,12,86,85,12,12,12,12,15,13,14,15,12,85,73,13,14,15,12,85,73,13,14,15,12,85,73,13,14,15,12,85,73,13,14,15,12,85,73,13,14,15,12,23,23,23,23,23,0,0,0,0,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,87,88,89,23,87,88,89,23,23,23,23,87,88,89,23,23,23,23,87,88,89,23,23,23,87,88,89,23,87,88,89,23,23,87,88,89,23,87,88,89,23,87,88,89,23,87,88,89,23,87,88,89,23,0,0,0,0,28,0,0,28,28,0,0,0,0,24,24,31,35,25,26,27,28,2,24,31,35,25,26,27,28,2,2,25,26,27,2,24,31,35,25,26,27,28,2,28,28,28,2,24,31,35,25,26,27,28,2,31,24,31,35,25,26,27,28,2,25,0,24,35,25,26,27,34,4,24,31,35,25,26,27,31,34,4,24,31,35,25,26,27,34,4,24,31,35,25,26,27,31,24,31,35,25,26,27,28,2,24,31,35,25,26,27,28,2,24,31,35,25,26,27,28,2,24,31,35,25,26,27,28,2,24,31,35,25,26,27,28,2,26,27,34,4,24,31,35,25,26,27,90,90,0,90,0,91,90,0,0,91,91,0,0,0,0,91,0,39,40,41,42,91,90,43,44,38,39,40,41,42,91,90,43,44,38,39,40,41,42,91,90,43,44,38,39,40,41,42,91,90,43,44,38,38,39,40,41,42,91,90,43,44,38,38,39,40,41,42,43,44,39,40,41,42,43,39,40,41,42,38,38,39,40,41,42,44,39,40,41,42,91,90,43,44,38,39,40,41,42,91,90,43,44,38,39,40,41,42,91,90,43,44,38,39,40,41,42,91,90,43,44,38,39,40,41,42,91,90,43,44,38,39,40,41,42,38,0,0,0,0,0,0,0,0,0,0,0,51,48,52,49,45,46,47,51,48,52,49,45,46,47,45,46,47,45,46,47,46,51,48,52,49,45,46,47,46,45,46,47,45,46,45,46,47,51,48,52,49,45,46,47,45,57,48,49,57,48,49,57,48,49,45,47,57,48,49,51,48,52,49,45,46,47,46,51,48,52,49,45,47,57,48,49,92,51,52,57,48,49,57,48,49,46,93,51,52,47,94,94,45,46,47,45,45,51,48,52,49,45,46,47,51,48,52,49,45,46,47,51,48,52,49,45,46,47,46,51,48,52,49,45,46,47,51,48,52,49,45,46,47,47,0,0,30,30,30,30,30,30,30,95,30,30,30,30,30,30,30,30,30,30,0,0,0,96,0,0,0,0,58,58,58,0,0,0,97,62,97,62,97,97,62,97,62,97,62,62,62,62,97,62,97,62,97,62,97,62,97,62,0,0,0,0,0,63,63,65,64,98,66,63,65,64,98,66,98,63,63,65,64,98,66,63,65,64,98,66,63,63,65,64,98,66,63,64,65,65,65,66,65,66,66,63,65,64,98,66,63,65,64,98,66,63,65,64,98,66,63,65,64,98,66,63,65,64,98,66,65,0,0,99,67,99,67,99,99,67,99,67,99,67,67,67,67,99,67,99,67,99,67,99,67,99,67,0,0,100,68,100,68,100,100,68,100,68,100,68,68,68,68,100,68,100,68,100,68,100,68,100,68,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,0,0,0,0,0,0,0,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,69,69,72,74,70,101,75,71,69,72,74,70,101,75,71,101,69,71,71,71,69,72,74,70,101,75,71,69,71,71,71,69,72,74,70,101,75,71,69,71,72,71,69,72,74,70,101,75,71,69,70,72,74,72,74,72,74,75,72,74,75,71,75,71,69,72,74,70,101,75,71,69,72,74,70,101,75,71,69,72,74,70,101,75,71,69,72,74,70,101,75,71,69,72,74,70,101,75,71,72,74,0,0,0,0,0,0,0,76,76,78,79,80,77,102,81,76,78,79,80,77,102,81,102,76,76,76,78,79,80,77,102,81,76,78,79,80,77,102,81,76,78,79,76,78,79,80,77,102,81,76,77,78,79,80,78,79,80,78,79,80,81,78,79,80,81,81,76,78,79,80,77,102,81,76,78,79,80,77,102,81,76,78,79,80,77,102,81,76,78,79,80,77,102,81,76,78,79,80,77,102,81,78,79,80],"f":[0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[1,2],[[3,3]],[[1,3,3]],[[]],0,[[[5,[4]]],1],[[],6],[1,6],[[],7],[1,7],[6],[[1,6]],[7],[[1,7]],[7,6],[[1,7],6],[7,7],[[1,7],7],0,[1],[1,6],[[],8],[[],8],[[],9],[[],10],[[]],[[7,6]],[[1,7,6]],[[7,7]],[[1,7,7]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[12,[11]],[12,[11]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[13,13],[14,14],[15,15],[[[12,[[0,[16,11]]]]],[[12,[[0,[16,11]]]]]],[[]],[[]],[[]],[[]],0,[[],[[12,[[0,[17,11]]]]]],[[],[[8,[15]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[13,13],3],[[14,14],3],[[15,15],3],[[[12,[[0,[11,11]]]],12],3],[[],3],[[],3],[[],3],[[13,18],19],[[14,18],19],[[15,18],19],[[[12,[[0,[20,11]]]],18],19],[[]],[[]],[[]],[[]],[[]],[[]],[[],21],[[],21],[[],21],[13],[14],[15],[[]],[[]],[[]],[[]],[[]],[[]],[[[12,[11]],11],3],[12,12],[12,[[12,[14]]]],[[],[[12,[11]]]],[[[12,[11]],11]],[[[12,[11]]],22],[[[12,[11]],11]],[15,8],[[]],[[]],[[]],[[]],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[23,23],[[]],[[],[[8,[23]]]],[[]],[[]],[[]],[[]],[[23,23],3],[[],3],[[23,18],19],[[]],[[]],[[]],[[]],[[],21],[23],[[]],[[]],[[]],[[]],[12,[[12,[23]]]],[12,[[12,[23]]]],[12,[[12,[23]]]],[23,8],[[]],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],9],[[],9],[[],10],[[],10],[[],10],[[],10],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[24,[5,[4]]],24],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[],25],[[],26],[[],27],[[],2],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[28,28],3],[[],3],[[28,18],19],[[2,18],19],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[29,30],31],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[25,29,[5,[4]]],25],0,[[[33,[[32,[29]]]]],24],[[[5,[34]]],35],[[],25],[[],26],[[],27],[[36,2],3],[[36,2],28],[[24,36,2],28],[[31,36,2],28],[[35,36,2],28],[[25,36,2],28],[[26,36,2],28],[[27,36,2],3],[29,31],[[],6],[7,6],[[24,7],6],[[31,7],6],[[35,7],6],[[25,7],6],[[26,7],6],[27,6],[[]],[[]],[24],[31],[35],[25],[26],[27],[29,31],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[37,26],[37,27],[6],[[7,6]],[[24,7,6]],[[31,7,6]],[[35,7,6]],[[25,7,6]],[[26,7,6]],[[27,6]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[38,6],3],[[[5,[34]],[5,[34]]],39],[[[5,[34]],[5,[34]]],40],[[[5,[34]],[5,[34]]],41],[[[5,[34]]],42],[[],43],[[],44],[[39,36,2],28],[[40,36,2],28],[[41,36,2],28],[[42,36,2],3],[[43,36,2],3],[[39,7],6],[[40,7],6],[[41,7],6],[42,6],[38,6],[[38,6],6],[39],[40],[41],[42],[44],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[39,7,6]],[[40,7,6]],[[41,7,6]],[[42,6]],[[38,6]],0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[45,45],[46,46],[47,47],[[]],[[]],[[]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],46],[[45,45],3],[[46,46],3],[[47,47],3],[[],3],0,[[45,18],19],[[46,18],19],[[47,18],19],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],21],[[],46],[48,46],[49,46],[[],[[12,[13]]]],[48,[[12,[13]]]],[49,[[12,[13]]]],[[],[[12,[15]]]],[48,[[12,[15]]]],[49,[[12,[15]]]],[45],0,[[],50],[48,50],[49,50],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[],51],[[],48],[[],52],[[[54,[[53,[[10,[47]]]]]],[54,[[53,[[12,[55]]]]]],[54,[[53,[46]]]]],49],[[6,6,6],45],[[36,36,56],47],[37],[[48,37]],[[49,37]],[[],[[54,[57]]]],[51,[[54,[57]]]],[52,[[54,[57]]]],[[],6],[48,6],[49,6],[47],[[48,47]],[[49,47]],0,[[[5,[58]]]],[[51,[5,[58]]]],[[52,[5,[58]]]],0,[[],[[60,[[5,[59]]]]]],[5,[[60,[[5,[59]]]]]],[[]],[[]],[[]],[45,36],[45],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],0,[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,[[]],[[]],[30,30],[[]],[[]],[[30,18],19],[[]],[37],[37,30],[30,[[22,[6]]]],[[]],[[[22,[6]]],30],[[]],[[],8],[[],8],[[],9],[[],10],[[]],0,0,0,[[[54,[57]]],[[5,[58]]]],0,0,0,0,[47],[[]],[[],61],0,0,0,[[]],[[]],[[]],[[]],[[30,[54,[57]]],[[5,[58]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[62,47]],[62],[62,61],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],10],[[],10],[[]],[[]],0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[63,64,[54,[57]]],[[5,[58]]]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],63],[[]],[[]],[[]],[[]],[[]],0,0,[[],65],[[65,36,2],3],[65,6],[[66,47]],[65],[66],[66,61],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],9],[[],9],[[],9],[[],10],[[],10],[[],10],[[],10],[[],10],[[]],[[]],[[]],[[]],[[]],[[65,6]],0,0,[[]],[[]],[[]],[[]],[[30,[54,[57]]],[[5,[58]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[67,47]],[67],[67,61],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],10],[[],10],[[]],[[]],0,0,[[]],[[]],[[]],[[]],[[30,[54,[57]]],[[5,[58]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[68,47]],[68],[68,61],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],10],[[],10],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[69,70,[54,[57]]],[[5,[58]]]],0,[71,71],[[]],[[],[[8,[71]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[71,71],3],[[],3],[[71,18],19],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],69],[[],21],[72,[[33,[[32,[6]]]]]],[71],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[],72],[[[33,[[32,[6]]]],73,[54,[57]]],74],[[72,36,2],3],[[74,36,2],3],[72,6],[74,6],[[75,47]],[72],[74],[75],[71,8],[75,61],[[]],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[72,6]],[[74,6]],0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[76,77,[54,[57]]],[[5,[58]]]],0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[10,[37]]],76],[78,[[33,[[32,[3]]]]]],[79,[[33,[[32,[6]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[[54,[57]]],78],[[[33,[[32,[3]]]]],79],[[[33,[[32,[6]]]],73,[54,[57]]],80],[[78,36,2],3],[[79,36,2],3],[[80,36,2],3],[78,6],[79,6],[80,6],[[81,47]],[78],[79],[80],[81],[81,61],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[78,6]],[[79,6]],[[80,6]]],"p":[[3,"Mos6502"],[3,"SystemInfo"],[15,"bool"],[8,"Memory"],[3,"Box"],[15,"u8"],[15,"u16"],[4,"Result"],[3,"TypeId"],[4,"Option"],[8,"PartialEq"],[3,"KeyState"],[4,"KeyPosition"],[4,"KeySymbol"],[4,"VirtualKey"],[8,"Clone"],[8,"Default"],[3,"Formatter"],[6,"Result"],[8,"Debug"],[15,"u64"],[3,"Vec"],[4,"C64Keys"],[3,"BankedMemory"],[3,"BranchMemory"],[3,"NullMemory"],[3,"NullPort"],[4,"ActiveInterrupt"],[15,"usize"],[3,"RomFile"],[3,"BlockMemory"],[3,"Cell"],[3,"Rc"],[8,"Port"],[3,"Mos6510Port"],[15,"u32"],[15,"str"],[3,"InterruptRegister"],[3,"Cia"],[3,"Pia"],[3,"Via"],[3,"PortRegisters"],[3,"Timer"],[3,"ShiftRegister"],[3,"Color"],[3,"JoystickState"],[3,"WindowConfig"],[3,"TextPlatformProvider"],[3,"WinitPlatformProvider"],[3,"String"],[3,"TextPlatform"],[3,"WinitPlatform"],[3,"Mutex"],[3,"Arc"],[4,"VirtualKeyCode"],[15,"f64"],[8,"PlatformProvider"],[8,"System"],[8,"Future"],[3,"Pin"],[3,"Duration"],[3,"BasicSystem"],[3,"C64SystemRoms"],[3,"C64SystemConfig"],[3,"C64BankSwitching"],[3,"C64System"],[3,"Easy6502System"],[3,"KlausSystem"],[3,"PetSystemRoms"],[3,"PetSystemConfig"],[4,"PetKeys"],[3,"PetPia1PortA"],[4,"KeyMappingStrategy"],[3,"PetPia1PortB"],[3,"PetSystem"],[3,"Vic20SystemRoms"],[3,"Vic20SystemConfig"],[3,"VicVia1PortA"],[3,"VicVia2PortB"],[3,"VicVia2PortA"],[3,"Vic20System"],[8,"InterruptHandler"],[8,"Stack"],[8,"MemoryIO"],[3,"SymbolAdapter"],[8,"KeyAdapter"],[3,"C64KeyboardAdapter"],[3,"C64SymbolAdapter"],[3,"C64VirtualAdapter"],[4,"TimerClockSource"],[4,"TimerOutput"],[8,"Platform"],[8,"SyncPlatform"],[8,"AsyncPlatform"],[8,"DiskLoadable"],[8,"SystemBuilder"],[3,"BasicSystemBuilder"],[3,"C64SystemBuilder"],[3,"Easy6502SystemBuilder"],[3,"KlausSystemBuilder"],[3,"PetSystemBuilder"],[3,"Vic20SystemBuilder"]]},\ -"noentiendo_desktop":{"doc":"","t":"DNNNENNNENENNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMFLLLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Args","Basic","C64","Easy","KeyMappingArg","Klaus","Pet","Physical","PlatformArg","Symbolic","SystemArg","Text","Vic","Winit","augment_args","augment_args_for_update","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","cmp","downcast","downcast","downcast","downcast","eq","eq","eq","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","from","from","from","from","from_arg_matches","from_arg_matches_mut","into","into","into","into","into_app","into_app_for_update","key_mapping","main","partial_cmp","partial_cmp","partial_cmp","platform","rom_path","system","to_owned","to_owned","to_owned","to_possible_value","to_possible_value","to_possible_value","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","update_from_arg_matches","update_from_arg_matches_mut","value_variants","value_variants","value_variants","vzip","vzip","vzip","vzip"],"q":["noentiendo_desktop","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,2,2,2,0,2,2,4,0,4,0,3,2,3,9,9,2,3,4,9,2,3,4,9,2,3,4,2,3,4,2,3,4,2,3,4,9,2,3,4,2,3,4,2,3,4,9,2,3,4,9,9,9,2,3,4,9,9,9,9,0,2,3,4,9,9,9,2,3,4,2,3,4,2,3,4,9,2,3,4,9,2,3,4,9,2,3,4,9,9,9,2,3,4,2,3,4,9],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1,1],[1,1],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[2,2],[3,3],[4,4],[[]],[[]],[[]],[[2,2],5],[[3,3],5],[[4,4],5],[[]],[[]],[[]],[[]],[[2,2],6],[[3,3],6],[[4,4],6],[[],6],[[],6],[[],6],[[2,7],8],[[3,7],8],[[4,7],8],[[9,7],8],[[]],[[]],[[]],[[]],[10,[[12,[9,11]]]],[10,[[12,[9,11]]]],[[]],[[]],[[]],[[]],[[],1],[[],1],0,[[]],[[2,2],[[13,[5]]]],[[3,3],[[13,[5]]]],[[4,4],[[13,[5]]]],0,0,0,[[]],[[]],[[]],[2,[[13,[14]]]],[3,[[13,[14]]]],[4,[[13,[14]]]],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],15],[[],15],[[],15],[[],15],[[],13],[[],13],[[],13],[[],13],[[9,10],[[12,[11]]]],[[9,10],[[12,[11]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]]],"p":[[6,"Command"],[4,"SystemArg"],[4,"PlatformArg"],[4,"KeyMappingArg"],[4,"Ordering"],[15,"bool"],[3,"Formatter"],[6,"Result"],[3,"Args"],[3,"ArgMatches"],[3,"Error"],[4,"Result"],[4,"Option"],[3,"PossibleValue"],[3,"TypeId"]]}\ +"libnoentiendo":{"doc":"noentiendo","t":"AAAAAAIIDILLLLLKLLMLKLKLKLKLKLKLMLLLLLLLKLKLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIEEDENNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNDNNNNNNNENNNNLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNDEDDNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLEDDDNIDNNDDIDLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLKKLLLLLLLKKLLLLLLKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKLLLLLLNNDNDNNDDNNDDEENDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIDDIIIDDDDDLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLMLLLLLLLLLLLKLLKLLKLLLMKLLLLLLLLLMLLLLLLKLLKLLKLLKLLMKLLMKKLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLMIDLLLLLLLKLLLLLLLLLLIIAKAAAAKKKADDLLLLLLLLLLLLLLLLLLLLLLLLDDDDDMLLLLLLLLLLLMLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNEDDDDDDNNNNNNNNNNNNNNNNNNNNNMLLLLLLLLLLLLLLLMLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDDDDDMLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["cpu","keyboard","memory","platform","roms","systems","InterruptHandler","MemoryIO","Mos6502","Stack","borrow","borrow_mut","downcast","from","get_info","interrupt","interrupt","into","memory","new","pop","pop","pop_word","pop_word","push","push","push_word","push_word","read","read","read_word","read_word","registers","reset","tick","try_from","try_into","type_id","upcast","vzip","write","write","write_word","write_word","A","Apostrophe","B","Backslash","Backspace","Backspace","C","CapsLock","CapsLock","Char","Comma","Commodore","CommodorePet","D","Delete","Delete","Digit0","Digit1","Digit2","Digit3","Digit4","Digit5","Digit6","Digit7","Digit8","Digit9","DownArrow","DownArrow","E","End","End","Enter","Equals","Escape","Escape","F","F1","F1","F10","F10","F11","F11","F12","F12","F2","F2","F3","F3","F4","F4","F5","F5","F6","F6","F7","F7","F8","F8","F9","F9","G","Grave","H","Home","Home","I","Insert","Insert","Interrupt","J","K","KeyAdapter","KeyMappingStrategy","KeyPosition","KeyState","KeySymbol","L","LAlt","LAlt","LControl","LControl","LShift","LShift","LSuper","LSuper","LeftArrow","LeftArrow","LeftBracket","M","Menu","Menu","Minus","N","Num0","Num1","Num2","Num3","Num4","Num5","Num6","Num7","Num8","Num9","NumDivide","NumEnter","NumLock","NumLock","NumMinus","NumMultiply","NumPeriod","NumPlus","O","P","PageDown","PageDown","PageUp","PageUp","Pause","Pause","Period","Physical","PrintScreen","PrintScreen","Q","R","RAlt","RAlt","RControl","RControl","RShift","RShift","RSuper","RSuper","Return","RightArrow","RightArrow","RightBracket","S","ScrollLock","ScrollLock","Semicolon","Slash","Space","SymbolAdapter","Symbolic","T","Tab","U","UpArrow","UpArrow","V","VirtualKey","W","X","Y","Z","bitor","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","commodore","default","deserialize","downcast","downcast","downcast","downcast","downcast","downcast","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","from","from","from","from","from","from","get_hash","get_hash","get_hash","hash","hash","hash","into","into","into","into","into","into","is_pressed","map","map","new","press","pressed","release","serialize","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast","upcast","vzip","vzip","vzip","vzip","vzip","vzip","A","Asterisk","At","B","C","C64KeyboardAdapter","C64Keys","C64SymbolAdapter","C64VirtualAdapter","ClrHome","Colon","Comma","Commodore","Control","CursorLeftRight","CursorUpDown","D","Digit0","Digit1","Digit2","Digit3","Digit4","Digit5","Digit6","Digit7","Digit8","Digit9","E","Equals","F","F1","F3","F5","F7","G","H","I","InsertDelete","J","K","L","LShift","LeftArrow","M","Minus","N","O","P","Period","Plus","Pound","Q","R","RShift","Restore","Return","RunStop","S","Semicolon","ShiftLock","Slash","Space","T","U","UpArrow","V","W","X","Y","Z","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deserialize","downcast","downcast","downcast","downcast","eq","equivalent","equivalent","fmt","from","from","from","from","get_hash","hash","into","into","into","into","map","map","map","serialize","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","vzip","vzip","vzip","vzip","ActiveInterrupt","BankedMemory","BlockMemory","BranchMemory","IRQ","Memory","Mos6510Port","NMI","None","NullMemory","NullPort","Port","SystemInfo","bank","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cycle_count","default","default","default","default","downcast","downcast","downcast","downcast","downcast","downcast","downcast","downcast","eq","equivalent","equivalent","fmt","fmt","from","from","from","from","from","from","from","from","from_file","into","into","into","into","into","into","into","into","map","mos652x","new","new","new","new","new","poll","poll","poll","poll","poll","poll","poll","poll","ram","read","read","read","read","read","read","read","read","reset","reset","reset","reset","reset","reset","reset","reset","rom","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","with_warnings","with_warnings","write","write","write","write","write","write","write","write","Chained","ChainedCount","Cia","Count","InterruptRegister","None","Phi2","Pia","PortRegisters","Pulse","PulseCount","ShiftRegister","Timer","TimerClockSource","TimerOutput","Toggle","Via","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","downcast","downcast","downcast","downcast","downcast","downcast","downcast","downcast","downcast","from","from","from","from","from","from","from","from","from","interrupt_enable","into","into","into","into","into","into","into","into","into","is_enabled","new","new","new","new","new","new","poll","poll","poll","poll","poll","read","read","read","read","read_enable","read_flags","reset","reset","reset","reset","reset","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","write","write","write","write","write_enable","AsyncPlatform","Color","JoystickState","Platform","PlatformProvider","SyncPlatform","TextPlatform","TextPlatformProvider","WindowConfig","WinitPlatform","WinitPlatformProvider","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","down","downcast","downcast","downcast","downcast","downcast","downcast","downcast","empty","eq","eq","eq","equivalent","equivalent","fire","fmt","fmt","fmt","from","from","from","from","from","from","from","get_hash","get_joystick_state","get_joystick_state","get_joystick_state","get_key_state","get_key_state","get_key_state","get_virtual_key_state","get_virtual_key_state","get_virtual_key_state","hash","height","input","input","input","into","into","into","into","into","into","into","left","new","new","new","new","new","new","print","print","print","provider","provider","provider","random","random","random","request_window","request_window","request_window","right","run","run","run","scale","setup","tick","to_owned","to_owned","to_owned","to_rgb","to_rgba","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","up","upcast","upcast","upcast","upcast","upcast","upcast","upcast","vzip","vzip","vzip","vzip","vzip","vzip","vzip","width","DiskLoadable","RomFile","borrow","borrow_mut","clone","clone_into","downcast","fmt","from","from_file","from_file","get_data","into","new","to_owned","try_from","try_into","type_id","upcast","vzip","System","SystemBuilder","basic","build","c64","easy","klaus","pet","render","reset","tick","vic","BasicSystem","BasicSystemBuilder","borrow","borrow","borrow_mut","borrow_mut","build","downcast","downcast","from","from","into","into","render","reset","tick","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","vzip","vzip","C64BankSwitching","C64System","C64SystemBuilder","C64SystemConfig","C64SystemRoms","basic","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","character","downcast","downcast","downcast","downcast","downcast","from","from","from","from","from","from_disk","into","into","into","into","into","kernal","mapping","new","poll","read","render","reset","reset","tick","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast","vzip","vzip","vzip","vzip","vzip","write","Easy6502System","Easy6502SystemBuilder","borrow","borrow","borrow_mut","borrow_mut","build","downcast","downcast","from","from","into","into","render","reset","tick","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","vzip","vzip","KlausSystem","KlausSystemBuilder","borrow","borrow","borrow_mut","borrow_mut","build","downcast","downcast","from","from","into","into","render","reset","tick","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","vzip","vzip","A","Ampersand","Apostrophe","At","B","Backslash","C","ClrHome","Colon","Comma","CursorLeftRight","CursorUpDown","D","Dollar","DoubleQuote","E","Exclamation","F","G","GreaterThan","H","Hash","I","InsertDelete","J","K","L","LShift","LeftArrow","LeftBracket","LeftParen","LessThan","M","N","Num0","Num1","Num2","Num3","Num4","Num5","Num6","Num7","Num8","Num9","NumDivide","NumEquals","NumMinus","NumMultiply","NumPeriod","NumPlus","O","P","Percent","PetKeys","PetPia1PortA","PetPia1PortB","PetSystem","PetSystemBuilder","PetSystemConfig","PetSystemRoms","Q","Question","R","RShift","Return","Reverse","RightBracket","RightParen","RunStop","S","Semicolon","Space","T","U","Unused","UpArrow","V","W","X","Y","Z","basic","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","character","clone","clone_into","deserialize","downcast","downcast","downcast","downcast","downcast","downcast","downcast","editor","eq","equivalent","equivalent","fmt","from","from","from","from","from","from","from","from_disk","get_hash","get_keyboard_row","hash","into","into","into","into","into","into","into","kernal","mapping","new","new","poll","poll","read","read","render","reset","reset","reset","serialize","tick","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast","upcast","upcast","vzip","vzip","vzip","vzip","vzip","vzip","vzip","write","write","Vic20System","Vic20SystemBuilder","Vic20SystemConfig","Vic20SystemRoms","VicVia1PortA","VicVia2PortA","VicVia2PortB","basic","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","cartridge","character","downcast","downcast","downcast","downcast","downcast","downcast","downcast","from","from","from","from","from","from","from","from_disk","get_joy_pin_3","get_keyboard_col","into","into","into","into","into","into","into","kernal","mapping","new","new","new","poll","poll","poll","read","read","read","render","reset","reset","reset","reset","tick","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast","upcast","upcast","vzip","vzip","vzip","vzip","vzip","vzip","vzip","write","write","write"],"q":[[0,"libnoentiendo"],[6,"libnoentiendo::cpu"],[44,"libnoentiendo::keyboard"],[304,"libnoentiendo::keyboard::commodore"],[428,"libnoentiendo::memory"],[576,"libnoentiendo::memory::mos652x"],[712,"libnoentiendo::platform"],[858,"libnoentiendo::roms"],[878,"libnoentiendo::systems"],[890,"libnoentiendo::systems::basic"],[916,"libnoentiendo::systems::c64"],[985,"libnoentiendo::systems::easy"],[1011,"libnoentiendo::systems::klaus"],[1037,"libnoentiendo::systems::pet"],[1220,"libnoentiendo::systems::vic"]],"d":["The cpu::Mos6502 represents a 6502 processor and …","Various representations of keyboard scancodes are required …","A memory::Memory implementation can be read from and …","A platform::Platform consumes a system and runs it. …","ROM file loading and unloading is different on different …","Systems are created by a systems::SystemBuilder. A system …","Handle interrupts by setting the applicable flags, pushing …","Read and write from the system’s memory.","The MOS 6502 CPU and its associated memory.","Push and pop values from the stack.","","","","Returns the argument unchanged.","Return a SystemInfo struct containing the current system …","","","Calls U::from(self).","","","Pop a byte from the stack.","","Pop a word (little-endian) from the stack.","","Push a byte onto the stack.","","Push a word (little-endian) onto the stack.","","Read a byte from the given address in memory.","","Read a word (little-endian) from the given address in …","","","","Execute a single instruction.","","","","","","Write a byte to the given address in memory.","","Write a word (little-endian) to the given address in …","","","","","","","","","","","Alphanumeric or symbol keys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Represents a mapping from a key state of one type to a key …","Represents different approaches to mapping key states, to …","A representation for a position on a modern keyboard. …","A set of keys that are currently pressed. Parameter T is …","A representation for a symbol on a modern keyboard.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Preserve physical keys one-to-one. This is most …","","","","","","","","","","","","","","","","","","","","","","","An adapter that maps physical key positions to symbols.","Preserve symbols one-to-one. This is more intuitive, but …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Keys and adapters for the Commodore 64, VIC-20, and other …","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if the given key is currently pressed.","Map the current state of the keyboard with symbols of type …","","Creates a new, empty key state.","Adds a key to the set of pressed keys.","Return the set of pressed keys.","Removes a key from the set of pressed keys.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","An adapter for mapping positions on a standard keyboard to …","Keys found on a VIC-20 or Commodore 64 keyboard.","An adapter for mapping symbols pressed on a standard …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","Represents the state of the interrupts on the system.","Represents the memory banking features found in the …","Represents a simple block of contiguous memory, with no …","Maps several Memory objects into a single contiguous …","An IRQ (maskable interrupt request) is active.","Represents a contiguous block of memory which can be read, …","Represents the port built into a MOS 6510 processor, …","An NMI (non-maskable interrupt) is active.","No interrupts are active.","Memory that does nothing when read or written to.","A Port that does nothing.","A Port that can be read from, written to, reset, or polled …","Information about the system that Memory implementations …","Add a new memory implementation to the banked memory.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Create a BlockMemory of the given size which loads its …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Map a new Memory object to the given starting address in …","The various interface adapters (6520, 6522, 6526) for the …","Create a new, empty banked memory.","Create a new MOS 6510 port with the given port.","Create a new BranchMemory with no mappings.","Create a new NullMemory that will not warn when read or …","Create a new NullPort that will not warn when read or …","Poll the port for interrupts. A port may trigger an …","Poll this memory to see if an interrupt has been triggered.","","","","","","","Create a BlockMemory of the given size which clears its …","Read a byte from the port. This is implementation-defined, …","Read a byte from this memory at the given address. …","","","","","","","Reset the port to its initial state, analogous to a system …","Reset this memory to its initial state, e.g. after a …","","","","","","","Create a BlockMemory of the given size which does not …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new NullMemory that will warn when read or …","Create a new NullPort that will warn when read or written …","Write a byte to the port. This is implementation-defined.","Write a byte to this memory at the given address.","","","","","","","Count underflows of the other timer.","Count underflows of the other timer, but only if the CNT …","The MOS 6526 Complex Interface Adapter (CIA). Contains two …","Use pulses on the external CNT pin.","Registers for interrupt flags and interrupt enable bits. …","The timer will not output to the port.","Use the internal system clock.","The MOS 6520 Peripheral Interface Adapter (PIA), …","A port and its associated registers on the MOS 6522 VIA or …","The timer will output a single pulse on PB6 or PB7.","The timer will output a set number of pulses.","The shift register used by the MOS 6522 VIA and MOS 6526 …","A timer circuit on the MOS 6522 VIA or MOS 6526 CIA.","The source of the timer’s clock, which controls the rate …","The manner in which the timer will output signals to the …","The timer will toggle the output on PB6 or PB7.","The MOS 6522 Versatile Interface Adapter (VIA). Contains …","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","The current state of which interrupts are enabled. If a …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Is the specified interrupt enabled?","","Create a new PIA with the two given port implementations.","","","","","","","","Poll the underlying port for interrupts.","Poll the timer (decrement the counter, fire the interrupt …","","","","Read from the port, respecting the DDR.","Read the value of the interrupt enable register.","Read the apparent value of the interrupt register, based …","","","","Reset the port to its initial state.","Reset the shift register’s internal state.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Write to the port, respecting the DDR.","Write to the interrupt enable register.","A platform which can be run asynchronously.","Represents an RGB color with 8 bits per channel.","Represents the current state of the connected joystick.","A Platform provides platform-specific functionality to the …","","A platform which can be run synchronously.","Represents a platform which exclusively operates over text …","","Represents the configuration of a GUI window that the …","A platform implementation for desktop platforms using …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new JoystickState with all buttons released.","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Get the current state of the connected joystick. If no …","","","Get the current state of the user’s physical keyboard.","","","Get the state of a virtual keyboard (emulating the target …","","","","","Read a string input from the user, “out-of-band” from …","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","Display the given string to the user, “out-of-band” …","","","","","","Return a random number between 0 and 255. This exists as …","","","Request that the platform create a window of the specified …","","","","","","","","","","","","","Convert the given color to a 32-bit integer, where the top …","Convert the given color to an array of 4 bytes, where the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Represents a value which can be loaded from a file.","Represents a predefined, immutable ROM file. Useful for …","","","","","","","Returns the argument unchanged.","Creates a ROM file by loading the contents of a file.","","Returns the contents of the ROM file.","Calls U::from(self).","Creates a new ROM file from the given data.","","","","","","","A representation of an emulated system.","","","Create a new system from the given roms, configuration, …","","","","","Render the current state of the system to the given …","Reset the system’s state.","Advance the system by one tick.","","A system which only operates in text mode, for basic …","A factory for creating a BasicSystem.","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","Bank switching implementation performed using the 6510’s …","The Commodore 64 system.","A factory for creating a Commodore 64 system.","Configuration for a Commodore 64 system.","The set of ROM files required to run a Commodore 64 system.","Basic ROM. Contains the BASIC interpreter.","","","","","","","","","","","","Character ROM. Used to generate the 8x8 character bitmaps.","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Kernel ROM. Contains the operating system.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A port of the “Easy6502” system from …","A factory for the Easy6502 system.","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","A system used to run Klaus Dormann’s 6502 CPU test suite.","A factory for creating a system that runs Klaus Dormann’…","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The keys found on the PET’s “Graphics” keyboard. …","Port A on the first PIA. This is used for generating the …","Port B on the first PIA. This is used for reading the …","The Commodore PET system.","A factory for the Commodore PET.","Configuration for a Commodore PET system.","The set of ROM files required to run a PET system.","","","","","","","","","","","","","","","","","","","","","","Basic ROM. Contains the BASIC interpreter.","","","","","","","","","","","","","","","","Character ROM. Used to generate the 8x8 character bitmaps.","","","","","","","","","","","Editor ROM. Contains the screen editor functions.","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Kernal ROM. Contains the operating system.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The VIC-20 system by Commodore.","A factory for creating a VIC-20 system.","Configuration for a VIC-20 system.","The set of ROM files required to run a VIC-20 system.","Port A on the first VIA chip. This is used to read the …","Port A on the second VIA chip. This is used to read the …","Port B on the second VIA chip. This is used to set the …","Basic ROM. Contains the BASIC interpreter.","","","","","","","","","","","","","","","","Cartridge ROM. Contains the contents of a cartridge, if …","Character ROM. Used to generate the 8x8 character bitmaps.","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Load the ROM files from files.","Return a reference to the joystick’s pin 3 state.","Return a reference to the keyboard column’s current …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Kernal ROM. Contains the operating system and editor …","","","","Create a new instance of the port, with the given keyboard …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,90,1,1,1,1,91,1,91,1,91,1,91,1,92,1,92,1,1,1,1,1,1,1,1,1,92,1,92,1,13,13,13,13,13,14,13,13,14,14,13,15,15,13,13,14,13,13,13,13,13,13,13,13,13,13,13,14,13,13,14,13,13,13,14,13,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,13,13,13,14,13,13,14,14,13,13,0,0,0,0,0,13,13,14,13,14,13,14,13,14,13,14,13,13,13,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,13,13,13,13,13,13,13,14,13,14,13,14,13,81,13,14,13,13,13,14,13,14,13,14,13,14,14,13,14,13,13,13,14,13,13,13,0,81,13,13,13,13,14,13,0,13,13,13,13,12,93,81,13,14,15,12,93,81,13,14,15,12,13,14,15,12,13,14,15,12,0,12,15,93,81,13,14,15,12,13,14,15,12,13,13,14,14,15,15,13,14,15,12,93,81,13,14,15,12,13,14,15,13,14,15,93,81,13,14,15,12,12,94,93,12,12,12,12,15,13,14,15,12,93,81,13,14,15,12,93,81,13,14,15,12,93,81,13,14,15,12,93,81,13,14,15,12,93,81,13,14,15,12,29,29,29,29,29,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,95,96,97,29,95,96,97,29,29,29,29,95,96,97,29,29,29,29,29,95,96,97,29,29,29,95,96,97,29,95,96,97,29,29,95,96,97,29,95,96,97,29,95,96,97,29,95,96,97,29,95,96,97,29,0,0,0,0,34,0,0,34,34,0,0,0,0,30,30,37,41,31,32,33,34,2,30,37,41,31,32,33,34,2,2,31,32,33,2,30,37,41,31,32,33,34,2,34,34,34,34,2,30,37,41,31,32,33,34,2,37,30,37,41,31,32,33,34,2,31,0,30,41,31,32,33,40,4,30,37,41,31,32,33,37,40,4,30,37,41,31,32,33,40,4,30,37,41,31,32,33,37,30,37,41,31,32,33,34,2,30,37,41,31,32,33,34,2,30,37,41,31,32,33,34,2,30,37,41,31,32,33,34,2,30,37,41,31,32,33,34,2,32,33,40,4,30,37,41,31,32,33,98,98,0,98,0,99,98,0,0,99,99,0,0,0,0,99,0,45,46,47,48,99,98,49,50,44,45,46,47,48,99,98,49,50,44,45,46,47,48,99,98,49,50,44,45,46,47,48,99,98,49,50,44,44,45,46,47,48,99,98,49,50,44,44,45,46,47,48,49,50,45,46,47,48,49,45,46,47,48,44,44,45,46,47,48,50,45,46,47,48,99,98,49,50,44,45,46,47,48,99,98,49,50,44,45,46,47,48,99,98,49,50,44,45,46,47,48,99,98,49,50,44,45,46,47,48,99,98,49,50,44,45,46,47,48,44,0,0,0,0,0,0,0,0,0,0,0,57,54,58,55,51,52,53,57,54,58,55,51,52,53,51,52,53,51,52,53,52,57,54,58,55,51,52,53,52,51,52,53,51,51,52,51,52,53,57,54,58,55,51,52,53,51,63,54,55,63,54,55,63,54,55,51,53,63,54,55,57,54,58,55,51,52,53,52,57,54,58,55,51,53,63,54,55,100,57,58,63,54,55,63,54,55,52,101,57,58,53,102,102,51,52,53,51,51,57,54,58,55,51,52,53,57,54,58,55,51,52,53,57,54,58,55,51,52,53,52,57,54,58,55,51,52,53,57,54,58,55,51,52,53,53,0,0,36,36,36,36,36,36,36,103,36,36,36,36,36,36,36,36,36,36,0,0,0,104,0,0,0,0,64,64,64,0,0,0,105,70,105,70,105,105,70,105,70,105,70,70,70,70,105,70,105,70,105,70,105,70,105,70,0,0,0,0,0,71,71,73,72,106,74,71,73,72,106,74,106,71,71,73,72,106,74,71,73,72,106,74,71,71,73,72,106,74,71,72,73,73,73,74,73,74,74,71,73,72,106,74,71,73,72,106,74,71,73,72,106,74,71,73,72,106,74,71,73,72,106,74,73,0,0,107,75,107,75,107,107,75,107,75,107,75,75,75,75,107,75,107,75,107,75,107,75,107,75,0,0,108,76,108,76,108,108,76,108,76,108,76,76,76,76,108,76,108,76,108,76,108,76,108,76,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,77,77,80,82,78,109,83,79,77,80,82,78,109,83,79,109,77,79,79,79,77,80,82,78,109,83,79,77,79,79,79,79,77,80,82,78,109,83,79,77,79,80,79,77,80,82,78,109,83,79,77,78,80,82,80,82,80,82,83,80,82,83,79,83,79,77,80,82,78,109,83,79,77,80,82,78,109,83,79,77,80,82,78,109,83,79,77,80,82,78,109,83,79,77,80,82,78,109,83,79,80,82,0,0,0,0,0,0,0,84,84,86,87,88,85,110,89,84,86,87,88,85,110,89,110,84,84,84,86,87,88,85,110,89,84,86,87,88,85,110,89,84,86,87,84,86,87,88,85,110,89,84,85,86,87,88,86,87,88,86,87,88,89,86,87,88,89,89,84,86,87,88,85,110,89,84,86,87,88,85,110,89,84,86,87,88,85,110,89,84,86,87,88,85,110,89,84,86,87,88,85,110,89,86,87,88],"f":[0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[1,2],[[3,3]],[[1,3,3]],[[]],0,[[[5,[4]]],1],[[],6],[1,6],[[],7],[1,7],[6],[[1,6]],[7],[[1,7]],[7,6],[[1,7],6],[7,7],[[1,7],7],0,[1],[1,6],[[],8],[[],8],[[],9],[[],10],[[]],[[7,6]],[[1,7,6]],[[7,7]],[[1,7,7]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[12,[11]],[12,[11]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[13,13],[14,14],[15,15],[[[12,[[0,[16,11]]]]],[[12,[[0,[16,11]]]]]],[[]],[[]],[[]],[[]],0,[[],[[12,[[0,[17,11]]]]]],[18,[[8,[15]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[13,13],3],[[14,14],3],[[15,15],3],[[[12,[[0,[11,11]]]],[12,[[0,[11,11]]]]],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[13,19],20],[[14,19],20],[[15,19],20],[[[12,[[0,[21,11]]]],19],20],[[]],[[]],[[]],[[]],[[]],[[]],[[[0,[22,23]],24],25],[[[0,[22,23]],24],25],[[[0,[22,23]],24],25],[[13,26]],[[14,26]],[[15,26]],[[]],[[]],[[]],[[]],[[]],[[]],[[[12,[11]],11],3],[12,12],[[[12,[13]]],[[12,[14]]]],[[],[[12,[11]]]],[[[12,[11]],11]],[[[12,[11]]],[[27,[11]]]],[[[12,[11]],11]],[[15,28],8],[[]],[[]],[[]],[[]],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[29,29],[[]],[18,[[8,[29]]]],[[]],[[]],[[]],[[]],[[29,29],3],[[],3],[[],3],[[29,19],20],[[]],[[]],[[]],[[]],[[[0,[22,23]],24],25],[[29,26]],[[]],[[]],[[]],[[]],[[[12,[13]]],[[12,[29]]]],[[[12,[14]]],[[12,[29]]]],[[[12,[15]]],[[12,[29]]]],[[29,28],8],[[]],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],9],[[],9],[[],10],[[],10],[[],10],[[],10],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[30,[5,[4]]],30],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[],31],[[],32],[[],33],[[],2],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[34,34],3],[[],3],[[],3],[[34,19],20],[[2,19],20],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[35,36],37],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[31,35,[5,[4]]],31],0,[[[39,[[38,[35]]]]],30],[[[5,[40]]],41],[[],31],[[],32],[[],33],[[42,2],3],[[42,2],34],[[30,42,2],34],[[37,42,2],34],[[41,42,2],34],[[31,42,2],34],[[32,42,2],34],[[33,42,2],3],[35,37],[[],6],[7,6],[[30,7],6],[[37,7],6],[[41,7],6],[[31,7],6],[[32,7],6],[33,6],[[]],[[]],[30],[37],[41],[31],[32],[33],[35,37],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[43,32],[43,33],[6],[[7,6]],[[30,7,6]],[[37,7,6]],[[41,7,6]],[[31,7,6]],[[32,7,6]],[[33,6]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[44,6],3],[[[5,[40]],[5,[40]]],45],[[[5,[40]],[5,[40]]],46],[[[5,[40]],[5,[40]]],47],[[[5,[40]]],48],[[],49],[[],50],[[45,42,2],34],[[46,42,2],34],[[47,42,2],34],[[48,42,2],3],[[49,42,2],3],[[45,7],6],[[46,7],6],[[47,7],6],[48,6],[44,6],[[44,6],6],[45],[46],[47],[48],[50],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[45,7,6]],[[46,7,6]],[[47,7,6]],[[48,6]],[[44,6]],0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[51,51],[52,52],[53,53],[[]],[[]],[[]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],52],[[51,51],3],[[52,52],3],[[53,53],3],[[],3],[[],3],0,[[51,19],20],[[52,19],20],[[53,19],20],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[0,[22,23]],24],25],[[],52],[54,52],[55,52],[[],[[12,[13]]]],[54,[[12,[13]]]],[55,[[12,[13]]]],[[],[[12,[15]]]],[54,[[12,[15]]]],[55,[[12,[15]]]],[[51,26]],0,[[],56],[54,56],[55,56],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[],57],[[],54],[[],58],[[[60,[[59,[[10,[53]]]]]],[60,[[59,[[12,[61]]]]]],[60,[[59,[52]]]]],55],[[6,6,6],51],[[42,42,62],53],[43],[[54,43]],[[55,43]],[[],[[60,[63]]]],[57,[[60,[63]]]],[58,[[60,[63]]]],[[],6],[54,6],[55,6],[53],[[54,53]],[[55,53]],0,[[[5,[64]]]],[[57,[5,[64]]]],[[58,[5,[64]]]],0,[[],[[66,[[5,[65]]]]]],[[[5,[64]]],[[66,[[5,[65]]]]]],[[]],[[]],[[]],[51,42],[51,[[67,[6]]]],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],0,[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,[[]],[[]],[36,36],[[]],[[]],[[36,19],20],[[]],[43],[43,36],[36,[[27,[6]]]],[[]],[[[27,[6]]],36],[[]],[[],8],[[],8],[[],9],[[],10],[[]],0,0,0,[[[60,[63]]],[[5,[64]]]],0,0,0,0,[[[68,[6]],53]],[[]],[[],69],0,0,0,[[]],[[]],[[]],[[]],[[36,[60,[63]]],[[5,[64]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[70,[68,[6]],53]],[70],[70,69],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],10],[[],10],[[]],[[]],0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[71,72,[60,[63]]],[[5,[64]]]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],71],[[]],[[]],[[]],[[]],[[]],0,0,[[[67,[[39,[[38,[35]]]]]]],73],[[73,42,2],3],[73,6],[[74,[68,[6]],53]],[73],[74],[74,69],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],9],[[],9],[[],9],[[],10],[[],10],[[],10],[[],10],[[],10],[[]],[[]],[[]],[[]],[[]],[[73,6]],0,0,[[]],[[]],[[]],[[]],[[36,[60,[63]]],[[5,[64]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[75,[68,[6]],53]],[75],[75,69],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],10],[[],10],[[]],[[]],0,0,[[]],[[]],[[]],[[]],[[36,[60,[63]]],[[5,[64]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[76,[68,[6]],53]],[76],[76,69],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],10],[[],10],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[77,78,[60,[63]]],[[5,[64]]]],0,[79,79],[[]],[18,[[8,[79]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[79,79],3],[[],3],[[],3],[[79,19],20],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],77],[[[0,[22,23]],24],25],[80,[[39,[[38,[6]]]]]],[[79,26]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[],80],[[[39,[[38,[6]]]],81,[60,[63]]],82],[[80,42,2],3],[[82,42,2],3],[80,6],[82,6],[[83,[68,[6]],53]],[80],[82],[83],[[79,28],8],[83,69],[[]],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[80,6]],[[82,6]],0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[84,85,[60,[63]]],[[5,[64]]]],0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[10,[43]]],84],[86,[[39,[[38,[3]]]]]],[87,[[39,[[38,[6]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[[60,[63]]],86],[[[39,[[38,[3]]]]],87],[[[39,[[38,[6]]]],81,[60,[63]]],88],[[86,42,2],3],[[87,42,2],3],[[88,42,2],3],[86,6],[87,6],[88,6],[[89,[68,[6]],53]],[86],[87],[88],[89],[89,69],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[86,6]],[[87,6]],[[88,6]]],"c":[],"p":[[3,"Mos6502"],[3,"SystemInfo"],[15,"bool"],[8,"Memory"],[3,"Box"],[15,"u8"],[15,"u16"],[4,"Result"],[3,"TypeId"],[4,"Option"],[8,"PartialEq"],[3,"KeyState"],[4,"KeyPosition"],[4,"KeySymbol"],[4,"VirtualKey"],[8,"Clone"],[8,"Default"],[8,"Deserializer"],[3,"Formatter"],[6,"Result"],[8,"Debug"],[8,"Hash"],[8,"Sized"],[8,"BuildHasher"],[15,"u64"],[8,"Hasher"],[3,"Vec"],[8,"Serializer"],[4,"C64Keys"],[3,"BankedMemory"],[3,"BranchMemory"],[3,"NullMemory"],[3,"NullPort"],[4,"ActiveInterrupt"],[15,"usize"],[3,"RomFile"],[3,"BlockMemory"],[3,"Cell"],[3,"Rc"],[8,"Port"],[3,"Mos6510Port"],[15,"u32"],[15,"str"],[3,"InterruptRegister"],[3,"Cia"],[3,"Pia"],[3,"Via"],[3,"PortRegisters"],[3,"Timer"],[3,"ShiftRegister"],[3,"Color"],[3,"JoystickState"],[3,"WindowConfig"],[3,"TextPlatformProvider"],[3,"WinitPlatformProvider"],[3,"String"],[3,"TextPlatform"],[3,"WinitPlatform"],[3,"Mutex"],[3,"Arc"],[4,"VirtualKeyCode"],[15,"f64"],[8,"PlatformProvider"],[8,"System"],[8,"Future"],[3,"Pin"],[15,"array"],[15,"slice"],[3,"Duration"],[3,"BasicSystem"],[3,"C64SystemRoms"],[3,"C64SystemConfig"],[3,"C64BankSwitching"],[3,"C64System"],[3,"Easy6502System"],[3,"KlausSystem"],[3,"PetSystemRoms"],[3,"PetSystemConfig"],[4,"PetKeys"],[3,"PetPia1PortA"],[4,"KeyMappingStrategy"],[3,"PetPia1PortB"],[3,"PetSystem"],[3,"Vic20SystemRoms"],[3,"Vic20SystemConfig"],[3,"VicVia1PortA"],[3,"VicVia2PortB"],[3,"VicVia2PortA"],[3,"Vic20System"],[8,"InterruptHandler"],[8,"Stack"],[8,"MemoryIO"],[3,"SymbolAdapter"],[8,"KeyAdapter"],[3,"C64KeyboardAdapter"],[3,"C64SymbolAdapter"],[3,"C64VirtualAdapter"],[4,"TimerClockSource"],[4,"TimerOutput"],[8,"Platform"],[8,"SyncPlatform"],[8,"AsyncPlatform"],[8,"DiskLoadable"],[8,"SystemBuilder"],[3,"BasicSystemBuilder"],[3,"C64SystemBuilder"],[3,"Easy6502SystemBuilder"],[3,"KlausSystemBuilder"],[3,"PetSystemBuilder"],[3,"Vic20SystemBuilder"]]},\ +"noentiendo_desktop":{"doc":"","t":"DNNNENNNENENNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMFLLLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Args","Basic","C64","Easy","KeyMappingArg","Klaus","Pet","Physical","PlatformArg","Symbolic","SystemArg","Text","Vic","Winit","augment_args","augment_args_for_update","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","cmp","downcast","downcast","downcast","downcast","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","from","from","from","from","from_arg_matches","from_arg_matches_mut","into","into","into","into","into_app","into_app_for_update","key_mapping","main","partial_cmp","partial_cmp","partial_cmp","platform","rom_path","system","to_owned","to_owned","to_owned","to_possible_value","to_possible_value","to_possible_value","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","update_from_arg_matches","update_from_arg_matches_mut","value_variants","value_variants","value_variants","vzip","vzip","vzip","vzip"],"q":[[0,"noentiendo_desktop"]],"d":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,2,2,2,0,2,2,4,0,4,0,3,2,3,9,9,2,3,4,9,2,3,4,9,2,3,4,2,3,4,2,3,4,2,3,4,9,2,3,4,2,2,3,3,4,4,2,3,4,9,2,3,4,9,9,9,2,3,4,9,9,9,9,0,2,3,4,9,9,9,2,3,4,2,3,4,2,3,4,9,2,3,4,9,2,3,4,9,2,3,4,9,9,9,2,3,4,2,3,4,9],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1,1],[1,1],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[2,2],[3,3],[4,4],[[]],[[]],[[]],[[2,2],5],[[3,3],5],[[4,4],5],[[]],[[]],[[]],[[]],[[2,2],6],[[3,3],6],[[4,4],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[2,7],8],[[3,7],8],[[4,7],8],[[9,7],8],[[]],[[]],[[]],[[]],[10,[[12,[9,11]]]],[10,[[12,[9,11]]]],[[]],[[]],[[]],[[]],[[],1],[[],1],0,[[]],[[2,2],[[13,[5]]]],[[3,3],[[13,[5]]]],[[4,4],[[13,[5]]]],0,0,0,[[]],[[]],[[]],[2,[[13,[14]]]],[3,[[13,[14]]]],[4,[[13,[14]]]],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],15],[[],15],[[],15],[[],15],[[],13],[[],13],[[],13],[[],13],[[9,10],[[12,[11]]]],[[9,10],[[12,[11]]]],[[],[[16,[2]]]],[[],[[16,[3]]]],[[],[[16,[4]]]],[[]],[[]],[[]],[[]]],"c":[],"p":[[6,"Command"],[4,"SystemArg"],[4,"PlatformArg"],[4,"KeyMappingArg"],[4,"Ordering"],[15,"bool"],[3,"Formatter"],[6,"Result"],[3,"Args"],[3,"ArgMatches"],[3,"Error"],[4,"Result"],[4,"Option"],[3,"PossibleValue"],[3,"TypeId"],[15,"slice"]]}\ }'); if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)}; if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex}; diff --git a/doc/settings.html b/doc/settings.html index 3fbbfdb7..fdb33696 100644 --- a/doc/settings.html +++ b/doc/settings.html @@ -1 +1 @@ -Rustdoc settings

    Rustdoc settings

    Back
    \ No newline at end of file +Rustdoc settings

    Rustdoc settings

    Back
    \ No newline at end of file diff --git a/doc/source-files.js b/doc/src-files.js similarity index 92% rename from doc/source-files.js rename to doc/src-files.js index 6b62cd45..1f914859 100644 --- a/doc/source-files.js +++ b/doc/src-files.js @@ -1,5 +1,5 @@ -var sourcesIndex = JSON.parse('{\ +var srcIndex = JSON.parse('{\ "libnoentiendo":["",[["cpu",[],["execute.rs","fetch.rs","mod.rs","registers.rs"]],["keyboard",[],["commodore.rs","mod.rs","positions.rs","symbols.rs","virtualkey.rs"]],["memory",[["mos652x",[],["cia.rs","mod.rs","pia.rs","via.rs"]]],["banked.rs","block.rs","branch.rs","mod.rs","mos6510.rs","null.rs","ports.rs"]],["platform",[["winit",[],["keyboard.rs","mod.rs"]]],["mod.rs","text.rs"]],["roms",[],["disk.rs","mod.rs"]],["systems",[["c64",[],["keyboard.rs","mod.rs","roms.rs","vic_ii.rs"]],["pet",[],["keyboard.rs","mod.rs","roms.rs"]],["vic",[],["chip.rs","keyboard.rs","mod.rs"]]],["basic.rs","easy.rs","klaus.rs","mod.rs"]]],["lib.rs","time.rs"]],\ "noentiendo_desktop":["",[],["main.rs"]]\ }'); -createSourceSidebar(); +createSrcSidebar(); diff --git a/doc/src/libnoentiendo/cpu/execute.rs.html b/doc/src/libnoentiendo/cpu/execute.rs.html index 88bf1350..9eb07ff4 100644 --- a/doc/src/libnoentiendo/cpu/execute.rs.html +++ b/doc/src/libnoentiendo/cpu/execute.rs.html @@ -1,4 +1,4 @@ -execute.rs - source
    1
    +execute.rs - source
    1
     2
     3
     4
    @@ -433,7 +433,289 @@
     433
     434
     435
    -
    use crate::cpu::fetch::Fetch;
    +436
    +437
    +438
    +439
    +440
    +441
    +442
    +443
    +444
    +445
    +446
    +447
    +448
    +449
    +450
    +451
    +452
    +453
    +454
    +455
    +456
    +457
    +458
    +459
    +460
    +461
    +462
    +463
    +464
    +465
    +466
    +467
    +468
    +469
    +470
    +471
    +472
    +473
    +474
    +475
    +476
    +477
    +478
    +479
    +480
    +481
    +482
    +483
    +484
    +485
    +486
    +487
    +488
    +489
    +490
    +491
    +492
    +493
    +494
    +495
    +496
    +497
    +498
    +499
    +500
    +501
    +502
    +503
    +504
    +505
    +506
    +507
    +508
    +509
    +510
    +511
    +512
    +513
    +514
    +515
    +516
    +517
    +518
    +519
    +520
    +521
    +522
    +523
    +524
    +525
    +526
    +527
    +528
    +529
    +530
    +531
    +532
    +533
    +534
    +535
    +536
    +537
    +538
    +539
    +540
    +541
    +542
    +543
    +544
    +545
    +546
    +547
    +548
    +549
    +550
    +551
    +552
    +553
    +554
    +555
    +556
    +557
    +558
    +559
    +560
    +561
    +562
    +563
    +564
    +565
    +566
    +567
    +568
    +569
    +570
    +571
    +572
    +573
    +574
    +575
    +576
    +577
    +578
    +579
    +580
    +581
    +582
    +583
    +584
    +585
    +586
    +587
    +588
    +589
    +590
    +591
    +592
    +593
    +594
    +595
    +596
    +597
    +598
    +599
    +600
    +601
    +602
    +603
    +604
    +605
    +606
    +607
    +608
    +609
    +610
    +611
    +612
    +613
    +614
    +615
    +616
    +617
    +618
    +619
    +620
    +621
    +622
    +623
    +624
    +625
    +626
    +627
    +628
    +629
    +630
    +631
    +632
    +633
    +634
    +635
    +636
    +637
    +638
    +639
    +640
    +641
    +642
    +643
    +644
    +645
    +646
    +647
    +648
    +649
    +650
    +651
    +652
    +653
    +654
    +655
    +656
    +657
    +658
    +659
    +660
    +661
    +662
    +663
    +664
    +665
    +666
    +667
    +668
    +669
    +670
    +671
    +672
    +673
    +674
    +675
    +676
    +677
    +678
    +679
    +680
    +681
    +682
    +683
    +684
    +685
    +686
    +687
    +688
    +689
    +690
    +691
    +692
    +693
    +694
    +695
    +696
    +697
    +698
    +699
    +700
    +701
    +702
    +703
    +704
    +705
    +706
    +707
    +708
    +709
    +710
    +711
    +712
    +713
    +714
    +715
    +716
    +717
    +
    use crate::cpu::fetch::Fetch;
     use crate::cpu::registers::{flags, Alu};
     use crate::cpu::{InterruptHandler, MemoryIO, Mos6502, Stack};
     
    @@ -861,12 +1143,293 @@
             Ok(2)
           }
     
    -      _ => {
    -        println!("Unimplemented opcode: {opcode:02X}");
    +      // === ILLEGAL OPCODES ===
    +      // TODO: Verify cycle counts
    +      0x04 | 0x0C | 0x14 | 0x1A | 0x1C | 0x34 | 0x3A | 0x3C | 0x44 | 0x54 | 0x5A | 0x5C | 0x64
    +      | 0x74 | 0x7A | 0x7C | 0x80 | 0x82 | 0x89 | 0xC2 | 0xD4 | 0xDA | 0xDC | 0xE2 | 0xF4
    +      | 0xFA | 0xFC => {
    +        // NOP
    +        match opcode {
    +          0x1A | 0x3A | 0x5A | 0x7A | 0xDA | 0xFA => {
    +            // No address
    +            Ok(2)
    +          }
    +          _ => {
    +            // Address
    +            let (_value, cycles) = self.fetch_operand_value(opcode);
    +            Ok(cycles)
    +          }
    +        }
    +      }
    +
    +      0x02 | 0x12 | 0x22 | 0x32 | 0x42 | 0x52 | 0x62 | 0x72 | 0x92 | 0xB2 | 0xD2 | 0xF2 => {
    +        // STP or KIL or JAM or HLT depending on who you ask
    +        println!("Execution stopped");
             Err(())
           }
    +
    +      0x03 | 0x07 | 0x0F | 0x13 | 0x17 | 0x1B | 0x1F => {
    +        // SLO: ASL -> ORA
    +        let (address, cycles) = self.fetch_operand_address(opcode);
    +        let value = self.read(address);
    +        self.registers.sr.write(flags::CARRY, value & 0x80 != 0);
    +
    +        let result = value << 1;
    +        self.write(address, result);
    +
    +        self.registers.a |= result;
    +        self.registers.sr.set_nz(self.registers.a);
    +
    +        Ok(cycles + 2)
    +      }
    +
    +      0x23 | 0x27 | 0x2F | 0x33 | 0x37 | 0x3B | 0x3F => {
    +        // RLA: ROL -> AND
    +        let (address, cycles) = self.fetch_operand_address(opcode);
    +        let value = self.read(address);
    +
    +        let result = (value << 1) | (self.registers.sr.read(flags::CARRY) as u8);
    +        self.registers.sr.write(flags::CARRY, result & 0x80 != 0);
    +        self.write(address, result);
    +
    +        self.registers.a &= result;
    +        self.registers.sr.set_nz(self.registers.a);
    +
    +        Ok(cycles + 2)
    +      }
    +
    +      0x43 | 0x47 | 0x4F | 0x53 | 0x57 | 0x5B | 0x5F => {
    +        // SRE: LSR -> EOR
    +        let (address, cycles) = self.fetch_operand_address(opcode);
    +        let value = self.read(address);
    +        let result = value >> 1;
    +
    +        self.registers.sr.write(flags::CARRY, value & 0x01 != 0);
    +        self.write(address, result);
    +
    +        self.registers.a ^= result;
    +        self.registers.sr.set_nz(self.registers.a);
    +
    +        Ok(cycles + 2)
    +      }
    +
    +      0x63 | 0x67 | 0x6F | 0x73 | 0x77 | 0x7B | 0x7F => {
    +        // RRA: ROR -> ADC
    +        let (address, cycles) = self.fetch_operand_address(opcode);
    +        let value = self.read(address);
    +        let result = value >> 1 | (self.registers.sr.read(flags::CARRY) as u8) << 7;
    +
    +        self.registers.sr.write(flags::CARRY, value & 0x01 != 0);
    +        self.registers.sr.set_nz(result);
    +        self.write(address, result);
    +
    +        self.registers.alu_add(result);
    +
    +        Ok(cycles)
    +      }
    +
    +      0x83 | 0x87 | 0x8F | 0x97 => {
    +        // SAX: AND -> STA
    +        let (address, cycles) = self.fetch_operand_address(opcode);
    +        let value = self.registers.x & self.registers.a;
    +        self.registers.sr.set_nz(value);
    +        self.write(address, value);
    +
    +        Ok(cycles)
    +      }
    +
    +      0xA3 | 0xA7 | 0xAF | 0xB3 | 0xB7 | 0xBF => {
    +        // LAX: LDA & LDX
    +        let (value, cycles) = self.fetch_operand_value(opcode);
    +        self.registers.a = value;
    +        self.registers.x = value;
    +        self.registers.sr.set_nz(value);
    +
    +        Ok(cycles)
    +      }
    +
    +      0xC3 | 0xC7 | 0xCF | 0xD3 | 0xD7 | 0xDB | 0xDF => {
    +        // DCP: DEC + SEC
    +        self.registers.sr.set(flags::CARRY);
    +
    +        let (address, cycles) = self.fetch_operand_address(opcode);
    +        let value = self.read(address);
    +        let result = value.wrapping_sub(1);
    +        self.registers.sr.set_nz(result);
    +        self.write(address, result);
    +
    +        Ok(cycles + 2)
    +      }
    +
    +      0xE3 | 0xE7 | 0xEF | 0xF3 | 0xF7 | 0xFB | 0xFF => {
    +        // ISC: INC => SBC
    +        let (address, cycles) = self.fetch_operand_address(opcode);
    +        let value = self.read(address);
    +        let result = value.wrapping_add(1);
    +        self.registers.alu_subtract(value);
    +        self.registers.sr.set_nz(result);
    +        self.write(address, result);
    +
    +        Ok(cycles + 2)
    +      }
    +
    +      0x0B | 0x2B => {
    +        // ANC: AND byte with accumulator. If result is negative then carry is set.
    +        let (value, cycles) = self.fetch_operand_value(opcode);
    +        let new_val = self.registers.a & value;
    +        self.registers.sr.write(flags::CARRY, new_val & 0x80 != 0);
    +
    +        Ok(cycles)
    +      }
    +
    +      0x4B => {
    +        // ALR: AND + LSR
    +        let (value, cycles) = self.fetch_operand_value(opcode);
    +        let new_val = (self.registers.a & value) >> 1;
    +
    +        self.registers.sr.write(flags::CARRY, new_val & 0x01 != 0);
    +        self.registers.sr.set_nz(new_val);
    +
    +        Ok(cycles)
    +      }
    +
    +      0x6B => {
    +        // ARR: AND + ROR
    +        let (value, cycles) = self.fetch_operand_value(opcode);
    +        let new_val = self.registers.a & value;
    +
    +        let new_val = (new_val >> 1) | (self.registers.sr.read(flags::CARRY) as u8) << 7;
    +
    +        self.registers.sr.write(flags::CARRY, new_val & 0x40 != 0);
    +        self
    +          .registers
    +          .sr
    +          .write(flags::OVERFLOW, new_val & 0x20 != 0);
    +        self.registers.sr.set_nz(new_val);
    +
    +        Ok(cycles)
    +      }
    +
    +      0x8B => {
    +        // XAA: AND X + AND immediate
    +        // Oooo she's highly unstable xx "Do not use" or whatever
    +
    +        let (value, cycles) = self.fetch_operand_value(opcode);
    +        let magic: u8;
    +        #[cfg(not(target_arch = "wasm32"))]
    +        {
    +          magic = rand::random::<u8>();
    +        }
    +        #[cfg(target_arch = "wasm32")]
    +        {
    +          magic = 0xFF;
    +        }
    +        self.registers.a |= magic;
    +        self.registers.a &= self.registers.x & value;
    +        self.registers.sr.set_nz(self.registers.a);
    +
    +        Ok(cycles)
    +      }
    +
    +      0xCB => {
    +        // AXS: AND -> DEX -> STX
    +        let (value, cycles) = self.fetch_operand_value(opcode);
    +        self.registers.x &= self.registers.a;
    +
    +        self.registers.alu_compare(self.registers.x, value);
    +        self.registers.x = self.registers.x.wrapping_sub(value);
    +
    +        Ok(cycles)
    +      }
    +
    +      0xEB => {
    +        // SBC (same as official sbc)
    +        let (value, cycles) = self.fetch_operand_value(opcode);
    +        self.registers.alu_subtract(value);
    +        Ok(cycles)
    +      }
    +
    +      0x9C => {
    +        // SHY: (Y & (high(addr) + 1)) -> addr
    +        let (address, cycles) = self.fetch_operand_address(opcode);
    +        let value = (address >> 8) as u8;
    +        let result = self.registers.y & (value.wrapping_add(1));
    +        self.registers.sr.set_nz(result);
    +        self.write(address, result);
    +
    +        Ok(cycles + 2)
    +      }
    +
    +      0x9E => {
    +        // SHX: (X & (high(addr) + 1)) -> addr
    +        let (address, cycles) = self.fetch_operand_address(opcode);
    +        let value = (address >> 8) as u8;
    +        let result = self.registers.x & (value.wrapping_add(1));
    +        self.registers.sr.set_nz(result);
    +        self.write(address, result);
    +
    +        Ok(cycles + 2)
    +      }
    +
    +      0x93 | 0x9F => {
    +        // AHX: (A & X & (high(addr) + 1)) -> addr
    +        let (address, cycles) = self.fetch_operand_address(opcode);
    +        let value = (address >> 8) as u8;
    +        let result = self.registers.a & self.registers.x & (value.wrapping_add(1));
    +        self.registers.sr.set_nz(result);
    +        self.write(address, result);
    +
    +        Ok(cycles + 2)
    +      }
    +
    +      0x9B => {
    +        // TAS: TSX with accumulator and AHX
    +        // A AND X -> SP
    +        // A AND X AND (H+1) -> M
    +        self.registers.sp.set(self.registers.a & self.registers.x);
    +
    +        let (address, cycles) = self.fetch_operand_address(opcode);
    +        let value = (address >> 8) as u8;
    +        let result = self.registers.a & self.registers.x & (value.wrapping_add(1));
    +        self.write(address, result);
    +
    +        Ok(cycles + 2)
    +      }
    +
    +      0xBB => {
    +        // LAS: LDA + TSX unholy matrimony
    +        // M AND SP -> A, X, SP
    +        let (value, cycles) = self.fetch_operand_value(opcode);
    +        let result = value & self.registers.sp.get();
    +
    +        self.registers.a = result;
    +        self.registers.x = result;
    +        self.registers.sp.set(result);
    +        self.registers.sr.set_nz(result);
    +
    +        Ok(cycles)
    +      }
    +
    +      0xAB => {
    +        // ATX or LXA: XAA but instead of and X we store in X
    +        let (value, cycles) = self.fetch_operand_value(opcode);
    +        let magic: u8;
    +        #[cfg(not(target_arch = "wasm32"))]
    +        {
    +          magic = rand::random::<u8>();
    +        }
    +        #[cfg(target_arch = "wasm32")]
    +        {
    +          magic = 0xFF;
    +        }
    +        self.registers.a |= magic;
    +        self.registers.a &= value;
    +        self.registers.x = self.registers.a;
    +        self.registers.sr.set_nz(self.registers.a);
    +
    +        Ok(cycles)
    +      }
         }
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/cpu/fetch.rs.html b/doc/src/libnoentiendo/cpu/fetch.rs.html index e5e02d74..0e9a5fab 100644 --- a/doc/src/libnoentiendo/cpu/fetch.rs.html +++ b/doc/src/libnoentiendo/cpu/fetch.rs.html @@ -1,4 +1,4 @@ -fetch.rs - source
    1
    +fetch.rs - source
    1
     2
     3
     4
    @@ -102,7 +102,8 @@
     102
     103
     104
    -
    use crate::cpu::{MemoryIO, Mos6502};
    +105
    +
    use crate::cpu::{MemoryIO, Mos6502};
     
     /// Fetch values or addresses from memory, optionally dependent on the current
     /// opcode.
    @@ -149,7 +150,8 @@
         }
       }
     
    -  fn fetch_operand_address(&mut self, opcode: u8) -> (u16, u8) {
    +  #[allow(clippy::manual_range_patterns)]
    +  fn fetch_operand_address(&mut self, opcode: u8) -> (u16, u8) {
         match opcode & 0x1F {
           0x00 | 0x02 | 0x09 | 0x0B => panic!("Immediate operand has no address"),
           0x01 | 0x03 => {
    @@ -206,5 +208,4 @@
         }
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/cpu/mod.rs.html b/doc/src/libnoentiendo/cpu/mod.rs.html index d79a354d..4f453f77 100644 --- a/doc/src/libnoentiendo/cpu/mod.rs.html +++ b/doc/src/libnoentiendo/cpu/mod.rs.html @@ -1,4 +1,4 @@ -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    @@ -177,7 +177,7 @@
     177
     178
     179
    -
    mod execute;
    +
    mod execute;
     mod fetch;
     mod registers;
     use crate::memory::{ActiveInterrupt, Memory, SystemInfo};
    @@ -356,5 +356,4 @@
         }
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/cpu/registers.rs.html b/doc/src/libnoentiendo/cpu/registers.rs.html index 9b730fdc..2ac931e3 100644 --- a/doc/src/libnoentiendo/cpu/registers.rs.html +++ b/doc/src/libnoentiendo/cpu/registers.rs.html @@ -1,4 +1,4 @@ -registers.rs - source
    1
    +registers.rs - source
    1
     2
     3
     4
    @@ -302,7 +302,7 @@
     302
     303
     304
    -
    /// The registers inside of a MOS 6502 processor.
    +
    /// The registers inside of a MOS 6502 processor.
     #[derive(Default)]
     pub struct Registers {
       /// The accumulator register, used in ALU operations.
    @@ -606,5 +606,4 @@
         self.sr = StatusRegister::new();
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/keyboard/commodore.rs.html b/doc/src/libnoentiendo/keyboard/commodore.rs.html index 9bde456a..33a227bc 100644 --- a/doc/src/libnoentiendo/keyboard/commodore.rs.html +++ b/doc/src/libnoentiendo/keyboard/commodore.rs.html @@ -1,4 +1,4 @@ -commodore.rs - source
    1
    +commodore.rs - source
    1
     2
     3
     4
    @@ -430,7 +430,7 @@
     430
     431
     432
    -
    use serde::{Deserialize, Serialize};
    +
    use serde::{Deserialize, Serialize};
     
     use crate::keyboard::{KeyAdapter, KeyPosition, KeyState, KeySymbol};
     
    @@ -862,5 +862,4 @@
         );
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/keyboard/mod.rs.html b/doc/src/libnoentiendo/keyboard/mod.rs.html index 399daa50..0ea38e86 100644 --- a/doc/src/libnoentiendo/keyboard/mod.rs.html +++ b/doc/src/libnoentiendo/keyboard/mod.rs.html @@ -1,4 +1,4 @@ -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    @@ -89,7 +89,7 @@
     89
     90
     91
    -
    /// Keys and adapters for the Commodore 64, VIC-20, and other Commodore machines.
    +
    /// Keys and adapters for the Commodore 64, VIC-20, and other Commodore machines.
     pub mod commodore;
     
     /// Keys used for positional keyboard mapping.
    @@ -180,5 +180,4 @@
       /// keys to convey the symbols being pressed.
       Symbolic,
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/keyboard/positions.rs.html b/doc/src/libnoentiendo/keyboard/positions.rs.html index a740b1f3..d1eb5043 100644 --- a/doc/src/libnoentiendo/keyboard/positions.rs.html +++ b/doc/src/libnoentiendo/keyboard/positions.rs.html @@ -1,4 +1,4 @@ -positions.rs - source
    1
    +positions.rs - source
    1
     2
     3
     4
    @@ -123,7 +123,7 @@
     123
     124
     125
    -
    /// A representation for a position on a modern keyboard.
    +
    /// A representation for a position on a modern keyboard.
     /// Source: <https://en.wikipedia.org/wiki/Keyboard_layout#/media/File:Qwerty.svg>
     #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
     pub enum KeyPosition {
    @@ -248,5 +248,4 @@
       Num0,
       NumPeriod,
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/keyboard/symbols.rs.html b/doc/src/libnoentiendo/keyboard/symbols.rs.html index c1b77116..ec05c478 100644 --- a/doc/src/libnoentiendo/keyboard/symbols.rs.html +++ b/doc/src/libnoentiendo/keyboard/symbols.rs.html @@ -1,4 +1,4 @@ -symbols.rs - source
    1
    +symbols.rs - source
    1
     2
     3
     4
    @@ -522,7 +522,7 @@
     522
     523
     524
    -
    use crate::keyboard::{KeyAdapter, KeyPosition, KeyState};
    +
    use crate::keyboard::{KeyAdapter, KeyPosition, KeyState};
     
     /// A representation for a symbol on a modern keyboard.
     #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
    @@ -1046,5 +1046,4 @@
         assert_eq!(&vec![KeySymbol::Interrupt], symbols.pressed());
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/keyboard/virtualkey.rs.html b/doc/src/libnoentiendo/keyboard/virtualkey.rs.html index f05e0f13..7954d07a 100644 --- a/doc/src/libnoentiendo/keyboard/virtualkey.rs.html +++ b/doc/src/libnoentiendo/keyboard/virtualkey.rs.html @@ -1,4 +1,4 @@ -virtualkey.rs - source
    1
    +virtualkey.rs - source
    1
     2
     3
     4
    @@ -10,7 +10,7 @@
     10
     11
     12
    -
    use serde::{Deserialize, Serialize};
    +
    use serde::{Deserialize, Serialize};
     
     use crate::systems::pet::PetKeys;
     
    @@ -22,5 +22,4 @@
       CommodorePet(PetKeys),
       // ...
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/lib.rs.html b/doc/src/libnoentiendo/lib.rs.html index 9d4e250c..86f282c8 100644 --- a/doc/src/libnoentiendo/lib.rs.html +++ b/doc/src/libnoentiendo/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    @@ -38,7 +38,7 @@
     38
     39
     40
    -
    #![doc = include_str!("../README.md")]
    +
    #![doc = include_str!("../README.md")]
     #![allow(clippy::new_without_default)]
     
     /// The [`cpu::Mos6502`] represents a 6502 processor and associated memory.
    @@ -78,5 +78,4 @@
     
     #[cfg(target_arch = "wasm32")]
     pub use wasm::*;
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/memory/banked.rs.html b/doc/src/libnoentiendo/memory/banked.rs.html index 4f80ea38..9df2f5c6 100644 --- a/doc/src/libnoentiendo/memory/banked.rs.html +++ b/doc/src/libnoentiendo/memory/banked.rs.html @@ -1,4 +1,4 @@ -banked.rs - source
    1
    +banked.rs - source
    1
     2
     3
     4
    @@ -68,7 +68,7 @@
     68
     69
     70
    -
    use std::{cell::Cell, rc::Rc};
    +
    use std::{cell::Cell, rc::Rc};
     
     use super::{ActiveInterrupt, Memory, SystemInfo};
     
    @@ -138,5 +138,4 @@
         highest
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/memory/block.rs.html b/doc/src/libnoentiendo/memory/block.rs.html index 08d78c3f..d10b5587 100644 --- a/doc/src/libnoentiendo/memory/block.rs.html +++ b/doc/src/libnoentiendo/memory/block.rs.html @@ -1,4 +1,4 @@ -block.rs - source
    1
    +block.rs - source
    1
     2
     3
     4
    @@ -144,7 +144,7 @@
     144
     145
     146
    -
    use crate::memory::{ActiveInterrupt, Memory, SystemInfo};
    +
    use crate::memory::{ActiveInterrupt, Memory, SystemInfo};
     use crate::roms::RomFile;
     
     /// Represents a simple block of contiguous memory, with no additional hardware.
    @@ -290,5 +290,4 @@
         BlockMemory::from_file(0x03, file);
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/memory/branch.rs.html b/doc/src/libnoentiendo/memory/branch.rs.html index 16623ac7..e8f18fcf 100644 --- a/doc/src/libnoentiendo/memory/branch.rs.html +++ b/doc/src/libnoentiendo/memory/branch.rs.html @@ -1,4 +1,4 @@ -branch.rs - source
    1
    +branch.rs - source
    1
     2
     3
     4
    @@ -214,7 +214,7 @@
     214
     215
     216
    -
    use crate::memory::{ActiveInterrupt, Memory, SystemInfo};
    +
    use crate::memory::{ActiveInterrupt, Memory, SystemInfo};
     
     /// Maps several Memory objects into a single contiguous address space.
     /// Each mapped object is assigned a starting address, and reads and writes
    @@ -430,5 +430,4 @@
         assert_eq!(0xFF, memory.read(0x0234));
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/memory/mod.rs.html b/doc/src/libnoentiendo/memory/mod.rs.html index afa01cc6..f8ec4659 100644 --- a/doc/src/libnoentiendo/memory/mod.rs.html +++ b/doc/src/libnoentiendo/memory/mod.rs.html @@ -1,4 +1,4 @@ -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    @@ -52,7 +52,7 @@
     52
     53
     54
    -
    mod banked;
    +
    mod banked;
     mod block;
     mod branch;
     mod mos6510;
    @@ -106,5 +106,4 @@
       /// implementation-dependent reason.
       fn poll(&mut self, cycles: u32, info: &SystemInfo) -> ActiveInterrupt;
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/memory/mos6510.rs.html b/doc/src/libnoentiendo/memory/mos6510.rs.html index ac2f26a8..66dd668d 100644 --- a/doc/src/libnoentiendo/memory/mos6510.rs.html +++ b/doc/src/libnoentiendo/memory/mos6510.rs.html @@ -1,4 +1,4 @@ -mos6510.rs - source
    1
    +mos6510.rs - source
    1
     2
     3
     4
    @@ -57,7 +57,7 @@
     57
     58
     59
    -
    use super::{ActiveInterrupt, Memory, Port, SystemInfo};
    +
    use super::{ActiveInterrupt, Memory, Port, SystemInfo};
     
     /// Represents the port built into a MOS 6510 processor, mapped to memory addresses 0x0000 (for the DDR) and 0x0001 (for the port itself).
     pub struct Mos6510Port {
    @@ -116,5 +116,4 @@
         }
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/memory/mos652x/cia.rs.html b/doc/src/libnoentiendo/memory/mos652x/cia.rs.html index 06489cdf..96e2077f 100644 --- a/doc/src/libnoentiendo/memory/mos652x/cia.rs.html +++ b/doc/src/libnoentiendo/memory/mos652x/cia.rs.html @@ -1,4 +1,4 @@ -cia.rs - source
    1
    +cia.rs - source
    1
     2
     3
     4
    @@ -415,7 +415,7 @@
     415
     416
     417
    -
    use crate::memory::{
    +
    use crate::memory::{
       mos652x::{InterruptRegister, PortRegisters, ShiftRegister, Timer},
       ActiveInterrupt, Memory, Port, SystemInfo,
     };
    @@ -832,5 +832,4 @@
         assert_eq!(ActiveInterrupt::IRQ, cia.poll(1, &SystemInfo::default()));
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/memory/mos652x/mod.rs.html b/doc/src/libnoentiendo/memory/mos652x/mod.rs.html index 842e0474..53b2e448 100644 --- a/doc/src/libnoentiendo/memory/mos652x/mod.rs.html +++ b/doc/src/libnoentiendo/memory/mos652x/mod.rs.html @@ -1,4 +1,4 @@ -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    @@ -286,7 +286,7 @@
     286
     287
     288
    -
    mod cia;
    +
    mod cia;
     mod pia;
     mod via;
     
    @@ -574,5 +574,4 @@
         self.interrupt_enable = 0;
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/memory/mos652x/pia.rs.html b/doc/src/libnoentiendo/memory/mos652x/pia.rs.html index 64dad9b1..68da9235 100644 --- a/doc/src/libnoentiendo/memory/mos652x/pia.rs.html +++ b/doc/src/libnoentiendo/memory/mos652x/pia.rs.html @@ -1,4 +1,4 @@ -pia.rs - source
    1
    +pia.rs - source
    1
     2
     3
     4
    @@ -190,7 +190,7 @@
     190
     191
     192
    -
    use crate::memory::{ActiveInterrupt, Memory, Port, SystemInfo};
    +
    use crate::memory::{ActiveInterrupt, Memory, Port, SystemInfo};
     
     // MOS 6520
     
    @@ -382,5 +382,4 @@
         assert_eq!(0b01010000, pia.read(0x00));
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/memory/mos652x/via.rs.html b/doc/src/libnoentiendo/memory/mos652x/via.rs.html index 4e16ac43..549358bf 100644 --- a/doc/src/libnoentiendo/memory/mos652x/via.rs.html +++ b/doc/src/libnoentiendo/memory/mos652x/via.rs.html @@ -1,4 +1,4 @@ -via.rs - source
    1
    +via.rs - source
    1
     2
     3
     4
    @@ -419,7 +419,7 @@
     419
     420
     421
    -
    use crate::memory::{
    +
    use crate::memory::{
       mos652x::{InterruptRegister, PortRegisters, ShiftRegister, Timer, TimerOutput},
       ActiveInterrupt, Memory, Port, SystemInfo,
     };
    @@ -840,5 +840,4 @@
         assert_eq!(ActiveInterrupt::IRQ, via.poll(1, &SystemInfo::default()));
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/memory/null.rs.html b/doc/src/libnoentiendo/memory/null.rs.html index d8b7000e..190175a2 100644 --- a/doc/src/libnoentiendo/memory/null.rs.html +++ b/doc/src/libnoentiendo/memory/null.rs.html @@ -1,4 +1,4 @@ -null.rs - source
    1
    +null.rs - source
    1
     2
     3
     4
    @@ -53,7 +53,7 @@
     53
     54
     55
    -
    use crate::memory::{ActiveInterrupt, Memory, SystemInfo};
    +
    use crate::memory::{ActiveInterrupt, Memory, SystemInfo};
     
     /// Memory that does nothing when read or written to.
     #[derive(Default)]
    @@ -108,5 +108,4 @@
         assert_eq!(memory.read(0x0000), 0);
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/memory/ports.rs.html b/doc/src/libnoentiendo/memory/ports.rs.html index e9af4638..f9cb6e80 100644 --- a/doc/src/libnoentiendo/memory/ports.rs.html +++ b/doc/src/libnoentiendo/memory/ports.rs.html @@ -1,4 +1,4 @@ -ports.rs - source
    1
    +ports.rs - source
    1
     2
     3
     4
    @@ -71,7 +71,7 @@
     71
     72
     73
    -
    use crate::memory::SystemInfo;
    +
    use crate::memory::SystemInfo;
     
     /// A Port that can be read from, written to, reset, or polled for interrupts.
     /// Used in the MOS 6520 PIA and the 6522 VIA.
    @@ -144,5 +144,4 @@
         assert_eq!(port.read(), 0);
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/platform/mod.rs.html b/doc/src/libnoentiendo/platform/mod.rs.html index 24e7d63b..5c10b74f 100644 --- a/doc/src/libnoentiendo/platform/mod.rs.html +++ b/doc/src/libnoentiendo/platform/mod.rs.html @@ -1,4 +1,4 @@ -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    @@ -139,7 +139,7 @@
     139
     140
     141
    -
    use crate::keyboard::{KeyPosition, KeyState, VirtualKey};
    +
    use crate::keyboard::{KeyPosition, KeyState, VirtualKey};
     use crate::systems::System;
     use async_trait::async_trait;
     use std::sync::Arc;
    @@ -280,5 +280,4 @@
       /// (such as the web) have a different source of randomness.
       fn random(&self) -> u8;
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/platform/text.rs.html b/doc/src/libnoentiendo/platform/text.rs.html index 4fd2c54c..d23ecd26 100644 --- a/doc/src/libnoentiendo/platform/text.rs.html +++ b/doc/src/libnoentiendo/platform/text.rs.html @@ -1,4 +1,4 @@ -text.rs - source
    1
    +text.rs - source
    1
     2
     3
     4
    @@ -78,7 +78,7 @@
     78
     79
     80
    -
    use crate::keyboard::{KeyPosition, KeyState, VirtualKey};
    +
    use crate::keyboard::{KeyPosition, KeyState, VirtualKey};
     use crate::platform::{Platform, PlatformProvider, SyncPlatform, WindowConfig};
     use crate::systems::System;
     use crate::time::FixedTimeStep;
    @@ -158,5 +158,4 @@
         rand::random()
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/platform/winit/keyboard.rs.html b/doc/src/libnoentiendo/platform/winit/keyboard.rs.html index 841a847b..817f2233 100644 --- a/doc/src/libnoentiendo/platform/winit/keyboard.rs.html +++ b/doc/src/libnoentiendo/platform/winit/keyboard.rs.html @@ -1,4 +1,4 @@ -keyboard.rs - source
    1
    +keyboard.rs - source
    1
     2
     3
     4
    @@ -131,7 +131,7 @@
     131
     132
     133
    -
    use winit::event::VirtualKeyCode;
    +
    use winit::event::VirtualKeyCode;
     
     use crate::keyboard::{KeyAdapter, KeyPosition, KeyState};
     
    @@ -264,5 +264,4 @@
         mapped
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/platform/winit/mod.rs.html b/doc/src/libnoentiendo/platform/winit/mod.rs.html index 8519c4d0..5e643cf0 100644 --- a/doc/src/libnoentiendo/platform/winit/mod.rs.html +++ b/doc/src/libnoentiendo/platform/winit/mod.rs.html @@ -1,4 +1,4 @@ -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    @@ -244,7 +244,7 @@
     244
     245
     246
    -
    use crate::keyboard::{KeyAdapter, KeyPosition, KeyState, VirtualKey};
    +
    use crate::keyboard::{KeyAdapter, KeyPosition, KeyState, VirtualKey};
     mod keyboard;
     use crate::platform::{JoystickState, Platform, PlatformProvider, SyncPlatform, WindowConfig};
     use crate::systems::System;
    @@ -490,5 +490,4 @@
         rand::random()
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/roms/disk.rs.html b/doc/src/libnoentiendo/roms/disk.rs.html index 0e66b993..d5491b0c 100644 --- a/doc/src/libnoentiendo/roms/disk.rs.html +++ b/doc/src/libnoentiendo/roms/disk.rs.html @@ -1,4 +1,4 @@ -disk.rs - source
    1
    +disk.rs - source
    1
     2
     3
     4
    @@ -16,7 +16,7 @@
     16
     17
     18
    -
    use crate::roms::RomFile;
    +
    use crate::roms::RomFile;
     use std::{fs::File, io::Read};
     
     /// Represents a value which can be loaded from a file.
    @@ -34,5 +34,4 @@
         RomFile::new(data)
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/roms/mod.rs.html b/doc/src/libnoentiendo/roms/mod.rs.html index a8a1e526..43762bcd 100644 --- a/doc/src/libnoentiendo/roms/mod.rs.html +++ b/doc/src/libnoentiendo/roms/mod.rs.html @@ -1,4 +1,4 @@ -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    @@ -28,7 +28,7 @@
     28
     29
     30
    -
    #[cfg(not(target_arch = "wasm32"))]
    +
    #[cfg(not(target_arch = "wasm32"))]
     mod disk;
     
     #[cfg(target_arch = "wasm32")]
    @@ -58,5 +58,4 @@
         self.data
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/systems/basic.rs.html b/doc/src/libnoentiendo/systems/basic.rs.html index 9bbe5f2e..34f90b31 100644 --- a/doc/src/libnoentiendo/systems/basic.rs.html +++ b/doc/src/libnoentiendo/systems/basic.rs.html @@ -1,4 +1,4 @@ -basic.rs - source
    1
    +basic.rs - source
    1
     2
     3
     4
    @@ -101,7 +101,7 @@
     101
     102
     103
    -
    use instant::Duration;
    +
    use instant::Duration;
     
     use crate::cpu::Mos6502;
     use crate::memory::{ActiveInterrupt, Memory, SystemInfo};
    @@ -204,5 +204,4 @@
     
       fn render(&mut self, _framebuffer: &mut [u8], _config: WindowConfig) {}
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/systems/c64/keyboard.rs.html b/doc/src/libnoentiendo/systems/c64/keyboard.rs.html index b407a70a..89cea152 100644 --- a/doc/src/libnoentiendo/systems/c64/keyboard.rs.html +++ b/doc/src/libnoentiendo/systems/c64/keyboard.rs.html @@ -1,4 +1,4 @@ -keyboard.rs - source
    1
    +keyboard.rs - source
    1
     2
     3
     4
    @@ -29,7 +29,7 @@
     29
     30
     31
    -
    use crate::keyboard::commodore::C64Keys;
    +
    use crate::keyboard::commodore::C64Keys;
     
     /// The keyboard matrix found on a Commodore 64.
     /// Source: <https://www.c64-wiki.com/wiki/Keyboard>.
    @@ -60,5 +60,4 @@
         ],
       ]
     };
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/systems/c64/mod.rs.html b/doc/src/libnoentiendo/systems/c64/mod.rs.html index 913d75b6..46f8d71f 100644 --- a/doc/src/libnoentiendo/systems/c64/mod.rs.html +++ b/doc/src/libnoentiendo/systems/c64/mod.rs.html @@ -1,4 +1,4 @@ -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    @@ -331,7 +331,7 @@
     331
     332
     333
    -
    use std::{
    +
    use std::{
       cell::{Cell, RefCell},
       rc::Rc,
       sync::Arc,
    @@ -664,5 +664,4 @@
           .draw_screen(&mut self.cpu.memory, framebuffer, config)
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/systems/c64/roms.rs.html b/doc/src/libnoentiendo/systems/c64/roms.rs.html index 64c5b0cb..f4a1452a 100644 --- a/doc/src/libnoentiendo/systems/c64/roms.rs.html +++ b/doc/src/libnoentiendo/systems/c64/roms.rs.html @@ -1,4 +1,4 @@ -roms.rs - source
    1
    +roms.rs - source
    1
     2
     3
     4
    @@ -64,7 +64,7 @@
     64
     65
     66
    -
    use crate::roms::RomFile;
    +
    use crate::roms::RomFile;
     
     #[cfg(target_arch = "wasm32")]
     use js_sys::Reflect;
    @@ -130,5 +130,4 @@
         }
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/systems/c64/vic_ii.rs.html b/doc/src/libnoentiendo/systems/c64/vic_ii.rs.html index 26130a25..b52b155a 100644 --- a/doc/src/libnoentiendo/systems/c64/vic_ii.rs.html +++ b/doc/src/libnoentiendo/systems/c64/vic_ii.rs.html @@ -1,4 +1,4 @@ -vic_ii.rs - source
    1
    +vic_ii.rs - source
    1
     2
     3
     4
    @@ -456,7 +456,7 @@
     456
     457
     458
    -
    use crate::memory::{ActiveInterrupt, Memory, SystemInfo};
    +
    use crate::memory::{ActiveInterrupt, Memory, SystemInfo};
     use crate::platform::{Color, WindowConfig};
     use std::cell::RefCell;
     use std::rc::Rc;
    @@ -914,5 +914,4 @@
         ActiveInterrupt::None
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/systems/easy.rs.html b/doc/src/libnoentiendo/systems/easy.rs.html index 78af71af..1e18c276 100644 --- a/doc/src/libnoentiendo/systems/easy.rs.html +++ b/doc/src/libnoentiendo/systems/easy.rs.html @@ -1,4 +1,4 @@ -easy.rs - source
    1
    +easy.rs - source
    1
     2
     3
     4
    @@ -133,7 +133,7 @@
     133
     134
     135
    -
    use instant::Duration;
    +
    use instant::Duration;
     
     use crate::cpu::{MemoryIO, Mos6502};
     use crate::keyboard::KeyPosition;
    @@ -268,5 +268,4 @@
         }
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/systems/klaus.rs.html b/doc/src/libnoentiendo/systems/klaus.rs.html index c39fde5f..bc891c4b 100644 --- a/doc/src/libnoentiendo/systems/klaus.rs.html +++ b/doc/src/libnoentiendo/systems/klaus.rs.html @@ -1,4 +1,4 @@ -klaus.rs - source
    1
    +klaus.rs - source
    1
     2
     3
     4
    @@ -47,7 +47,7 @@
     47
     48
     49
    -
    use instant::{Duration, Instant};
    +
    use instant::{Duration, Instant};
     
     use crate::cpu::Mos6502;
     use crate::memory::BlockMemory;
    @@ -96,5 +96,4 @@
     
       fn render(&mut self, _framebuffer: &mut [u8], _window: WindowConfig) {}
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/systems/mod.rs.html b/doc/src/libnoentiendo/systems/mod.rs.html index c94678f1..f4823799 100644 --- a/doc/src/libnoentiendo/systems/mod.rs.html +++ b/doc/src/libnoentiendo/systems/mod.rs.html @@ -1,4 +1,4 @@ -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    @@ -30,7 +30,7 @@
     30
     31
     32
    -
    use crate::platform::{PlatformProvider, WindowConfig};
    +
    use crate::platform::{PlatformProvider, WindowConfig};
     use instant::Duration;
     use std::sync::Arc;
     
    @@ -62,5 +62,4 @@
       /// Render the current state of the system to the given framebuffer.
       fn render(&mut self, framebuffer: &mut [u8], window: WindowConfig);
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/systems/pet/keyboard.rs.html b/doc/src/libnoentiendo/systems/pet/keyboard.rs.html index 25c0ba39..2f7fbea6 100644 --- a/doc/src/libnoentiendo/systems/pet/keyboard.rs.html +++ b/doc/src/libnoentiendo/systems/pet/keyboard.rs.html @@ -1,4 +1,4 @@ -keyboard.rs - source
    1
    +keyboard.rs - source
    1
     2
     3
     4
    @@ -456,7 +456,7 @@
     456
     457
     458
    -
    use serde::{Deserialize, Serialize};
    +
    use serde::{Deserialize, Serialize};
     
     use crate::keyboard::{KeyAdapter, KeyPosition, KeyState, KeySymbol, VirtualKey};
     
    @@ -914,5 +914,4 @@
         );
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/systems/pet/mod.rs.html b/doc/src/libnoentiendo/systems/pet/mod.rs.html index 73c12d6d..02a0fbb6 100644 --- a/doc/src/libnoentiendo/systems/pet/mod.rs.html +++ b/doc/src/libnoentiendo/systems/pet/mod.rs.html @@ -1,4 +1,4 @@ -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    @@ -252,7 +252,7 @@
     252
     253
     254
    -
    use crate::cpu::{MemoryIO, Mos6502};
    +
    use crate::cpu::{MemoryIO, Mos6502};
     use crate::keyboard::{KeyAdapter, KeyMappingStrategy, SymbolAdapter};
     use crate::memory::mos652x::{Pia, Via};
     use crate::memory::{BlockMemory, BranchMemory, NullMemory, NullPort, Port, SystemInfo};
    @@ -506,5 +506,4 @@
         }
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/systems/pet/roms.rs.html b/doc/src/libnoentiendo/systems/pet/roms.rs.html index 9466705a..a8ee362a 100644 --- a/doc/src/libnoentiendo/systems/pet/roms.rs.html +++ b/doc/src/libnoentiendo/systems/pet/roms.rs.html @@ -1,4 +1,4 @@ -roms.rs - source
    1
    +roms.rs - source
    1
     2
     3
     4
    @@ -68,7 +68,7 @@
     68
     69
     70
    -
    use crate::roms::RomFile;
    +
    use crate::roms::RomFile;
     
     #[cfg(target_arch = "wasm32")]
     use js_sys::{Reflect, Uint8Array};
    @@ -138,5 +138,4 @@
         }
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/systems/vic/chip.rs.html b/doc/src/libnoentiendo/systems/vic/chip.rs.html index b867c303..52e77602 100644 --- a/doc/src/libnoentiendo/systems/vic/chip.rs.html +++ b/doc/src/libnoentiendo/systems/vic/chip.rs.html @@ -1,4 +1,4 @@ -chip.rs - source
    1
    +chip.rs - source
    1
     2
     3
     4
    @@ -514,7 +514,7 @@
     514
     515
     516
    -
    use crate::memory::{ActiveInterrupt, Memory, SystemInfo};
    +
    use crate::memory::{ActiveInterrupt, Memory, SystemInfo};
     use crate::platform::{Color, PlatformProvider, WindowConfig};
     use std::cell::RefCell;
     use std::rc::Rc;
    @@ -1030,5 +1030,4 @@
         assert_eq!(0x1FFF, VicChip::vic_to_cpu_address(0x3FFF));
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/systems/vic/keyboard.rs.html b/doc/src/libnoentiendo/systems/vic/keyboard.rs.html index e921e260..5d43db7f 100644 --- a/doc/src/libnoentiendo/systems/vic/keyboard.rs.html +++ b/doc/src/libnoentiendo/systems/vic/keyboard.rs.html @@ -1,4 +1,4 @@ -keyboard.rs - source
    1
    +keyboard.rs - source
    1
     2
     3
     4
    @@ -29,7 +29,7 @@
     29
     30
     31
    -
    use crate::keyboard::commodore::C64Keys;
    +
    use crate::keyboard::commodore::C64Keys;
     
     /// The keyboard matrix in a VIC-20 system.
     /// Source: <https://www.lemon64.com/forum/viewtopic.php?t=68210&sid=8b976b9f8699fc3588c5622b43a1f4b1>
    @@ -60,5 +60,4 @@
         ],
       ]
     };
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/systems/vic/mod.rs.html b/doc/src/libnoentiendo/systems/vic/mod.rs.html index 801201ff..2109f061 100644 --- a/doc/src/libnoentiendo/systems/vic/mod.rs.html +++ b/doc/src/libnoentiendo/systems/vic/mod.rs.html @@ -1,4 +1,4 @@ -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    @@ -326,7 +326,7 @@
     326
     327
     328
    -
    use crate::cpu::Mos6502;
    +
    use crate::cpu::Mos6502;
     use crate::keyboard::commodore::C64VirtualAdapter;
     use crate::keyboard::{
       commodore::{C64KeyboardAdapter, C64SymbolAdapter},
    @@ -654,5 +654,4 @@
           .redraw_screen(&mut self.cpu.memory, framebuffer);
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/libnoentiendo/time.rs.html b/doc/src/libnoentiendo/time.rs.html index c8d82db3..8649fcc4 100644 --- a/doc/src/libnoentiendo/time.rs.html +++ b/doc/src/libnoentiendo/time.rs.html @@ -1,4 +1,4 @@ -time.rs - source
    1
    +time.rs - source
    1
     2
     3
     4
    @@ -77,7 +77,7 @@
     77
     78
     79
    -
    use std::thread;
    +
    use std::thread;
     
     use instant::{Duration, Instant};
     
    @@ -156,5 +156,4 @@
         }
       }
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/src/noentiendo_desktop/main.rs.html b/doc/src/noentiendo_desktop/main.rs.html index 1924d067..404948b2 100644 --- a/doc/src/noentiendo_desktop/main.rs.html +++ b/doc/src/noentiendo_desktop/main.rs.html @@ -1,4 +1,4 @@ -main.rs - source
    1
    +main.rs - source
    1
     2
     3
     4
    @@ -98,7 +98,7 @@
     98
     99
     100
    -
    #[cfg(not(target_arch = "wasm32"))]
    +
    #[cfg(not(target_arch = "wasm32"))]
     use libnoentiendo::{
       keyboard::KeyMappingStrategy,
       platform::{SyncPlatform, TextPlatform, WinitPlatform},
    @@ -198,5 +198,4 @@
     
       platform.run(system);
     }
    -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/doc/static.files/COPYRIGHT-002d5dd09d9a4f50.txt b/doc/static.files/COPYRIGHT-23e9bde6c69aea69.txt similarity index 97% rename from doc/static.files/COPYRIGHT-002d5dd09d9a4f50.txt rename to doc/static.files/COPYRIGHT-23e9bde6c69aea69.txt index 34e48134..1447df79 100644 --- a/doc/static.files/COPYRIGHT-002d5dd09d9a4f50.txt +++ b/doc/static.files/COPYRIGHT-23e9bde6c69aea69.txt @@ -1,3 +1,5 @@ +# REUSE-IgnoreStart + These documentation pages include resources by third parties. This copyright file applies only to those resources. The following third party resources are included, and carry their own copyright notices and license terms: @@ -44,3 +46,5 @@ included, and carry their own copyright notices and license terms: See SourceSerif4-LICENSE.md. This copyright file is intended to be distributed with rustdoc output. + +# REUSE-IgnoreEnd diff --git a/doc/static.files/FiraSans-LICENSE-1761dca11ffc8f19.txt b/doc/static.files/FiraSans-LICENSE-db4b642586e02d97.txt similarity index 99% rename from doc/static.files/FiraSans-LICENSE-1761dca11ffc8f19.txt rename to doc/static.files/FiraSans-LICENSE-db4b642586e02d97.txt index ff9afab0..d7e9c149 100644 --- a/doc/static.files/FiraSans-LICENSE-1761dca11ffc8f19.txt +++ b/doc/static.files/FiraSans-LICENSE-db4b642586e02d97.txt @@ -1,3 +1,5 @@ +// REUSE-IgnoreStart + Digitized data copyright (c) 2012-2015, The Mozilla Foundation and Telefonica S.A. with Reserved Font Name < Fira >, @@ -92,3 +94,5 @@ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + +// REUSE-IgnoreEnd diff --git a/doc/static.files/NanumBarunGothic-LICENSE-2fe9ce67ec95245d.txt b/doc/static.files/NanumBarunGothic-LICENSE-18c5adf4b52b4041.txt similarity index 99% rename from doc/static.files/NanumBarunGothic-LICENSE-2fe9ce67ec95245d.txt rename to doc/static.files/NanumBarunGothic-LICENSE-18c5adf4b52b4041.txt index 0bf46682..4b3edc29 100644 --- a/doc/static.files/NanumBarunGothic-LICENSE-2fe9ce67ec95245d.txt +++ b/doc/static.files/NanumBarunGothic-LICENSE-18c5adf4b52b4041.txt @@ -1,3 +1,5 @@ +// REUSE-IgnoreStart + Copyright (c) 2010, NAVER Corporation (https://www.navercorp.com/), with Reserved Font Name Nanum, Naver Nanum, NanumGothic, Naver NanumGothic, @@ -97,3 +99,5 @@ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + +// REUSE-IgnoreEnd diff --git a/doc/static.files/SourceCodePro-LICENSE-f554967dca0cf1dd.txt b/doc/static.files/SourceCodePro-LICENSE-d180d465a756484a.txt similarity index 99% rename from doc/static.files/SourceCodePro-LICENSE-f554967dca0cf1dd.txt rename to doc/static.files/SourceCodePro-LICENSE-d180d465a756484a.txt index 07542572..0d2941e1 100644 --- a/doc/static.files/SourceCodePro-LICENSE-f554967dca0cf1dd.txt +++ b/doc/static.files/SourceCodePro-LICENSE-d180d465a756484a.txt @@ -1,3 +1,5 @@ +// REUSE-IgnoreStart + Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. This Font Software is licensed under the SIL Open Font License, Version 1.1. @@ -91,3 +93,5 @@ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + +// REUSE-IgnoreEnd diff --git a/doc/static.files/SourceSerif4-LICENSE-971e190366a5901b.md b/doc/static.files/SourceSerif4-LICENSE-3bb119e13b1258b7.md similarity index 95% rename from doc/static.files/SourceSerif4-LICENSE-971e190366a5901b.md rename to doc/static.files/SourceSerif4-LICENSE-3bb119e13b1258b7.md index 5871e1f3..175fa4f4 100644 --- a/doc/static.files/SourceSerif4-LICENSE-971e190366a5901b.md +++ b/doc/static.files/SourceSerif4-LICENSE-3bb119e13b1258b7.md @@ -1,3 +1,6 @@ + + +Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. Copyright 2014 - 2023 Adobe (http://www.adobe.com/), with Reserved Font Name ‘Source’. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. This Font Software is licensed under the SIL Open Font License, Version 1.1. @@ -91,3 +94,5 @@ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + + diff --git a/doc/static.files/ayu-be46fdc453a55015.css b/doc/static.files/ayu-be46fdc453a55015.css deleted file mode 100644 index 1cad9034..00000000 --- a/doc/static.files/ayu-be46fdc453a55015.css +++ /dev/null @@ -1 +0,0 @@ - :root{--main-background-color:#0f1419;--main-color:#c5c5c5;--settings-input-color:#ffb454;--settings-button-color:#fff;--settings-button-border-focus:#e0e0e0;--sidebar-background-color:#14191f;--sidebar-background-color-hover:rgba(70,70,70,0.33);--code-block-background-color:#191f26;--scrollbar-track-background-color:transparent;--scrollbar-thumb-background-color:#5c6773;--scrollbar-color:#5c6773 #24292f;--headings-border-bottom-color:#5c6773;--border-color:#5c6773;--button-background-color:#141920;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#5c6773;--copy-path-button-color:#fff;--copy-path-img-filter:invert(70%);--copy-path-img-hover-filter:invert(100%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#ffa0a5;--trait-link-color:#39afd7;--assoc-item-link-color:#39afd7;--function-link-color:#fdd687;--macro-link-color:#a37acc;--keyword-link-color:#39afd7;--mod-link-color:#39afd7;--link-color:#39afd7;--sidebar-link-color:#53b1db;--sidebar-current-link-background-color:transparent;--search-result-link-focus-background-color:#3c3c3c;--search-result-border-color:#aaa3;--search-color:#fff;--search-error-code-background-color:#4f4c4c;--search-results-alias-color:#c5c5c5;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:none;--search-tab-button-not-selected-background:transparent !important;--search-tab-button-selected-border-top-color:none;--search-tab-button-selected-background:#141920 !important;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ff7733;--code-highlight-kw-2-color:#ff7733;--code-highlight-lifetime-color:#ff7733;--code-highlight-prelude-color:#69f2df;--code-highlight-prelude-val-color:#ff7733;--code-highlight-number-color:#b8cc52;--code-highlight-string-color:#b8cc52;--code-highlight-literal-color:#ff7733;--code-highlight-attribute-color:#e6e1cf;--code-highlight-self-color:#36a3d9;--code-highlight-macro-color:#a37acc;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#788797;--code-highlight-doc-comment-color:#a1ac88;--src-line-numbers-span-color:#5c6773;--src-line-number-highlighted-background-color:rgba(255,236,164,0.06);--test-arrow-color:#788797;--test-arrow-background-color:rgba(57,175,215,0.09);--test-arrow-hover-color:#c5c5c5;--test-arrow-hover-background-color:rgba(57,175,215,0.368);--target-background-color:rgba(255,236,164,0.06);--target-border-color:rgba(255,180,76,0.85);--kbd-color:#c5c5c5;--kbd-background:#314559;--kbd-box-shadow-color:#5c6773;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg) brightness(94%) contrast(94%);--crate-search-div-hover-filter:invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg) brightness(113%) contrast(76%);--crate-search-hover-border:#e0e0e0;--source-sidebar-background-selected:#14191f;--source-sidebar-background-hover:#14191f;--table-alt-row-background-color:#191f26;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:rgb(91,59,1);--scrape-example-code-line-highlight-focus:rgb(124,75,15);--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(15,20,25,1);--scrape-example-code-wrapper-background-end:rgba(15,20,25,0);}h1,h2,h3,h4,h1 a,.sidebar h2 a,.sidebar h3 a,#source-sidebar>.title{color:#fff;}h4{border:none;}.docblock code{color:#ffb454;}.docblock a>code{color:#39AFD7 !important;}.code-header,.docblock pre>code,pre,pre>code,.item-info code,.rustdoc.source .example-wrap{color:#e6e1cf;}.sidebar .current,.sidebar a:hover,#source-sidebar div.files>a:hover,details.dir-entry summary:hover,#source-sidebar div.files>a:focus,details.dir-entry summary:focus,#source-sidebar div.files>a.selected{color:#ffb44c;}.sidebar-elems .location{color:#ff7733;}.src-line-numbers .line-highlighted{color:#708090;padding-right:7px;border-right:1px solid #ffb44c;}.search-results a:hover,.search-results a:focus{color:#fff !important;background-color:#3c3c3c;}.search-results a{color:#0096cf;}.search-results a div.desc{color:#c5c5c5;}.result-name .primitive>i,.result-name .keyword>i{color:#788797;}#search-tabs>button.selected{border-bottom:1px solid #ffb44c !important;border-top:none;}#search-tabs>button:not(.selected){border:none;background-color:transparent !important;}#search-tabs>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}#settings-menu>a img{filter:invert(100);} \ No newline at end of file diff --git a/doc/static.files/ayu-fd19013d6ce078bf.css b/doc/static.files/ayu-fd19013d6ce078bf.css new file mode 100644 index 00000000..ba3aa60e --- /dev/null +++ b/doc/static.files/ayu-fd19013d6ce078bf.css @@ -0,0 +1 @@ + :root{--main-background-color:#0f1419;--main-color:#c5c5c5;--settings-input-color:#ffb454;--settings-input-border-color:#999;--settings-button-color:#fff;--settings-button-border-focus:#e0e0e0;--sidebar-background-color:#14191f;--sidebar-background-color-hover:rgba(70,70,70,0.33);--code-block-background-color:#191f26;--scrollbar-track-background-color:transparent;--scrollbar-thumb-background-color:#5c6773;--scrollbar-color:#5c6773 #24292f;--headings-border-bottom-color:#5c6773;--border-color:#5c6773;--button-background-color:#141920;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#5c6773;--copy-path-button-color:#fff;--copy-path-img-filter:invert(70%);--copy-path-img-hover-filter:invert(100%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#ffa0a5;--trait-link-color:#39afd7;--assoc-item-link-color:#39afd7;--function-link-color:#fdd687;--macro-link-color:#a37acc;--keyword-link-color:#39afd7;--mod-link-color:#39afd7;--link-color:#39afd7;--sidebar-link-color:#53b1db;--sidebar-current-link-background-color:transparent;--search-result-link-focus-background-color:#3c3c3c;--search-result-border-color:#aaa3;--search-color:#fff;--search-error-code-background-color:#4f4c4c;--search-results-alias-color:#c5c5c5;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:none;--search-tab-button-not-selected-background:transparent !important;--search-tab-button-selected-border-top-color:none;--search-tab-button-selected-background:#141920 !important;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ff7733;--code-highlight-kw-2-color:#ff7733;--code-highlight-lifetime-color:#ff7733;--code-highlight-prelude-color:#69f2df;--code-highlight-prelude-val-color:#ff7733;--code-highlight-number-color:#b8cc52;--code-highlight-string-color:#b8cc52;--code-highlight-literal-color:#ff7733;--code-highlight-attribute-color:#e6e1cf;--code-highlight-self-color:#36a3d9;--code-highlight-macro-color:#a37acc;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#788797;--code-highlight-doc-comment-color:#a1ac88;--src-line-numbers-span-color:#5c6773;--src-line-number-highlighted-background-color:rgba(255,236,164,0.06);--test-arrow-color:#788797;--test-arrow-background-color:rgba(57,175,215,0.09);--test-arrow-hover-color:#c5c5c5;--test-arrow-hover-background-color:rgba(57,175,215,0.368);--target-background-color:rgba(255,236,164,0.06);--target-border-color:rgba(255,180,76,0.85);--kbd-color:#c5c5c5;--kbd-background:#314559;--kbd-box-shadow-color:#5c6773;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg) brightness(94%) contrast(94%);--crate-search-div-hover-filter:invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg) brightness(113%) contrast(76%);--crate-search-hover-border:#e0e0e0;--src-sidebar-background-selected:#14191f;--src-sidebar-background-hover:#14191f;--table-alt-row-background-color:#191f26;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:rgb(91,59,1);--scrape-example-code-line-highlight-focus:rgb(124,75,15);--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(15,20,25,1);--scrape-example-code-wrapper-background-end:rgba(15,20,25,0);}h1,h2,h3,h4,h1 a,.sidebar h2 a,.sidebar h3 a,#src-sidebar>.title{color:#fff;}h4{border:none;}.docblock code{color:#ffb454;}.docblock a>code{color:#39AFD7 !important;}.code-header,.docblock pre>code,pre,pre>code,.item-info code,.rustdoc.src .example-wrap{color:#e6e1cf;}.sidebar .current,.sidebar a:hover,#src-sidebar div.files>a:hover,details.dir-entry summary:hover,#src-sidebar div.files>a:focus,details.dir-entry summary:focus,#src-sidebar div.files>a.selected{color:#ffb44c;}.sidebar-elems .location{color:#ff7733;}.src-line-numbers .line-highlighted{color:#708090;padding-right:7px;border-right:1px solid #ffb44c;}.search-results a:hover,.search-results a:focus{color:#fff !important;background-color:#3c3c3c;}.search-results a{color:#0096cf;}.search-results a div.desc{color:#c5c5c5;}.result-name .primitive>i,.result-name .keyword>i{color:#788797;}#search-tabs>button.selected{border-bottom:1px solid #ffb44c !important;border-top:none;}#search-tabs>button:not(.selected){border:none;background-color:transparent !important;}#search-tabs>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}#settings-menu>a img{filter:invert(100);} \ No newline at end of file diff --git a/doc/static.files/dark-0a43001d3fc2282c.css b/doc/static.files/dark-0a43001d3fc2282c.css new file mode 100644 index 00000000..81032b2f --- /dev/null +++ b/doc/static.files/dark-0a43001d3fc2282c.css @@ -0,0 +1 @@ +:root{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:rgb(78,139,202);--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2A2A2A;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:rgb(91,59,1);--scrape-example-code-line-highlight-focus:rgb(124,75,15);--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);} \ No newline at end of file diff --git a/doc/static.files/dark-cf923f49f397b216.css b/doc/static.files/dark-cf923f49f397b216.css deleted file mode 100644 index 70f9f118..00000000 --- a/doc/static.files/dark-cf923f49f397b216.css +++ /dev/null @@ -1 +0,0 @@ -:root{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--source-sidebar-background-selected:#333;--source-sidebar-background-hover:#444;--table-alt-row-background-color:#2A2A2A;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:rgb(91,59,1);--scrape-example-code-line-highlight-focus:rgb(124,75,15);--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);} \ No newline at end of file diff --git a/doc/static.files/light-1596385f77d47ef2.css b/doc/static.files/light-1596385f77d47ef2.css new file mode 100644 index 00000000..50adde5b --- /dev/null +++ b/doc/static.files/light-1596385f77d47ef2.css @@ -0,0 +1 @@ +:root{--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#F5F5F5;--sidebar-background-color-hover:#E0E0E0;--code-block-background-color:#F5F5F5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#ffffff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:rgb(78,139,202);--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#F5F5F5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);} \ No newline at end of file diff --git a/doc/static.files/light-db279b6232be9c13.css b/doc/static.files/light-db279b6232be9c13.css deleted file mode 100644 index f0080dbe..00000000 --- a/doc/static.files/light-db279b6232be9c13.css +++ /dev/null @@ -1 +0,0 @@ -:root{--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#F5F5F5;--sidebar-background-color-hover:#E0E0E0;--code-block-background-color:#F5F5F5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#ffffff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--source-sidebar-background-selected:#fff;--source-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#F5F5F5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);} \ No newline at end of file diff --git a/doc/static.files/main-0795b7d26be81095.js b/doc/static.files/main-0795b7d26be81095.js new file mode 100644 index 00000000..87b43389 --- /dev/null +++ b/doc/static.files/main-0795b7d26be81095.js @@ -0,0 +1,12 @@ +"use strict";window.RUSTDOC_TOOLTIP_HOVER_MS=300;window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS=450;function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}function hideMain(){addClass(document.getElementById(MAIN_ID),"hidden")}function showMain(){removeClass(document.getElementById(MAIN_ID),"hidden")}function elemIsInParent(elem,parent){while(elem&&elem!==document.body){if(elem===parent){return true}elem=elem.parentElement}return false}function blurHandler(event,parentElem,hideCallback){if(!elemIsInParent(document.activeElement,parentElem)&&!elemIsInParent(event.relatedTarget,parentElem)){hideCallback()}}window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");function setMobileTopbar(){const mobileLocationTitle=document.querySelector(".mobile-topbar h2");const locationTitle=document.querySelector(".sidebar h2.location");if(mobileLocationTitle&&locationTitle){mobileLocationTitle.innerHTML=locationTitle.innerHTML}}function getVirtualKey(ev){if("key"in ev&&typeof ev.key!=="undefined"){return ev.key}const c=ev.charCode||ev.keyCode;if(c===27){return"Escape"}return String.fromCharCode(c)}const MAIN_ID="main-content";const SETTINGS_BUTTON_ID="settings-menu";const ALTERNATIVE_DISPLAY_ID="alternative-display";const NOT_DISPLAYED_ID="not-displayed";const HELP_BUTTON_ID="help-button";function getSettingsButton(){return document.getElementById(SETTINGS_BUTTON_ID)}function getHelpButton(){return document.getElementById(HELP_BUTTON_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}function getOrCreateSection(id,classes){let el=document.getElementById(id);if(!el){el=document.createElement("section");el.id=id;el.className=classes;insertAfter(el,document.getElementById(MAIN_ID))}return el}function getAlternativeDisplayElem(){return getOrCreateSection(ALTERNATIVE_DISPLAY_ID,"content hidden")}function getNotDisplayedElem(){return getOrCreateSection(NOT_DISPLAYED_ID,"hidden")}function switchDisplayedElement(elemToDisplay){const el=getAlternativeDisplayElem();if(el.children.length>0){getNotDisplayedElem().appendChild(el.firstElementChild)}if(elemToDisplay===null){addClass(el,"hidden");showMain();return}el.appendChild(elemToDisplay);hideMain();removeClass(el,"hidden")}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function loadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.rel="stylesheet";document.getElementsByTagName("head")[0].appendChild(link)}function preLoadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.rel="preload";link.as="style";document.getElementsByTagName("head")[0].appendChild(link)}(function(){const isHelpPage=window.location.pathname.endsWith("/help.html");function loadScript(url){const script=document.createElement("script");script.src=url;document.head.append(script)}getSettingsButton().onclick=event=>{if(event.ctrlKey||event.altKey||event.metaKey){return}window.hideAllModals(false);addClass(getSettingsButton(),"rotate");event.preventDefault();loadCss(getVar("static-root-path")+getVar("settings-css"));loadScript(getVar("static-root-path")+getVar("settings-js"));preLoadCss(getVar("static-root-path")+getVar("theme-light-css"));preLoadCss(getVar("static-root-path")+getVar("theme-dark-css"));preLoadCss(getVar("static-root-path")+getVar("theme-ayu-css"));setTimeout(()=>{const themes=getVar("themes").split(",");for(const theme of themes){if(theme!==""){preLoadCss(getVar("root-path")+theme+".css")}}},0)};window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:()=>{let el=document.getElementById("search");if(!el){el=document.createElement("section");el.id="search";getNotDisplayedElem().appendChild(el)}return el},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:()=>{if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},isDisplayed:()=>searchState.outputElement().parentElement.id===ALTERNATIVE_DISPLAY_ID,focus:()=>{searchState.input.focus()},defocus:()=>{searchState.input.blur()},showResults:search=>{if(search===null||typeof search==="undefined"){search=searchState.outputElement()}switchDisplayedElement(search);searchState.mouseMovedAfterSearch=false;document.title=searchState.title},removeQueryParameters:()=>{document.title=searchState.titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.hash)}},hideResults:()=>{switchDisplayedElement(null);searchState.removeQueryParameters()},getQueryStringParams:()=>{const params={};window.location.search.substring(1).split("&").map(s=>{const pair=s.split("=");params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},setup:()=>{const search_input=searchState.input;if(!searchState.input){return}let searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(getVar("static-root-path")+getVar("search-js"));loadScript(resourcePath("search-index",".js"))}}search_input.addEventListener("focus",()=>{search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!==""){loadSearch()}const params=searchState.getQueryStringParams();if(params.search!==undefined){searchState.setLoadingSearch();loadSearch()}},setLoadingSearch:()=>{const search=searchState.outputElement();search.innerHTML="

    "+searchState.loadingText+"

    ";searchState.showResults(search)},};const toggleAllDocsId="toggle-all-docs";let savedHash="";function handleHashes(ev){if(ev!==null&&searchState.isDisplayed()&&ev.newURL){switchDisplayedElement(null);const hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}const elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}const pageId=window.location.hash.replace(/^#/,"");if(savedHash!==pageId){savedHash=pageId;if(pageId!==""){expandSection(pageId)}}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function handleEscape(ev){searchState.clearInputTimeout();searchState.hideResults();ev.preventDefault();searchState.defocus();window.hideAllModals(true)}function handleShortcut(ev){const disableShortcuts=getSettingValue("disable-shortcuts")==="true";if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"&&document.activeElement.type!=="checkbox"&&document.activeElement.type!=="radio"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":ev.preventDefault();searchState.focus();break;case"+":ev.preventDefault();expandAllDocs();break;case"-":ev.preventDefault();collapseAllDocs();break;case"?":showHelp();break;default:break}}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);function addSidebarItems(){if(!window.SIDEBAR_ITEMS){return}const sidebar=document.getElementsByClassName("sidebar-elems")[0];function block(shortty,id,longty){const filtered=window.SIDEBAR_ITEMS[shortty];if(!filtered){return}const h3=document.createElement("h3");h3.innerHTML=`${longty}`;const ul=document.createElement("ul");ul.className="block "+shortty;for(const name of filtered){let path;if(shortty==="mod"){path=name+"/index.html"}else{path=shortty+"."+name+".html"}const current_page=document.location.href.split("/").pop();const link=document.createElement("a");link.href=path;if(path===current_page){link.className="current"}link.textContent=name;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(h3);sidebar.appendChild(ul)}if(sidebar){block("primitive","primitives","Primitive Types");block("mod","modules","Modules");block("macro","macros","Macros");block("struct","structs","Structs");block("enum","enums","Enums");block("union","unions","Unions");block("constant","constants","Constants");block("static","static","Statics");block("trait","traits","Traits");block("fn","functions","Functions");block("type","types","Type Definitions");block("foreigntype","foreign-types","Foreign Types");block("keyword","keywords","Keywords");block("traitalias","trait-aliases","Trait Aliases")}}window.register_implementors=imp=>{const implementors=document.getElementById("implementors-list");const synthetic_implementors=document.getElementById("synthetic-implementors-list");const inlined_types=new Set();const TEXT_IDX=0;const SYNTHETIC_IDX=1;const TYPES_IDX=2;if(synthetic_implementors){onEachLazy(synthetic_implementors.getElementsByClassName("impl"),el=>{const aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(alias=>{inlined_types.add(alias)})})}let currentNbImpls=implementors.getElementsByClassName("impl").length;const traitName=document.querySelector(".main-heading h1 > .trait").textContent;const baseIdName="impl-"+traitName+"-";const libs=Object.getOwnPropertyNames(imp);const script=document.querySelector("script[data-ignore-extern-crates]");const ignoreExternCrates=new Set((script?script.getAttribute("data-ignore-extern-crates"):"").split(","));for(const lib of libs){if(lib===window.currentCrate||ignoreExternCrates.has(lib)){continue}const structs=imp[lib];struct_loop:for(const struct of structs){const list=struct[SYNTHETIC_IDX]?synthetic_implementors:implementors;if(struct[SYNTHETIC_IDX]){for(const struct_type of struct[TYPES_IDX]){if(inlined_types.has(struct_type)){continue struct_loop}inlined_types.add(struct_type)}}const code=document.createElement("h3");code.innerHTML=struct[TEXT_IDX];addClass(code,"code-header");onEachLazy(code.getElementsByTagName("a"),elem=>{const href=elem.getAttribute("href");if(href&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});const currentId=baseIdName+currentNbImpls;const anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");const display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}function addSidebarCrates(){if(!window.ALL_CRATES){return}const sidebarElems=document.getElementsByClassName("sidebar-elems")[0];if(!sidebarElems){return}const h3=document.createElement("h3");h3.innerHTML="Crates";const ul=document.createElement("ul");ul.className="block crate";for(const crate of window.ALL_CRATES){const link=document.createElement("a");link.href=window.rootPath+crate+"/index.html";if(window.rootPath!=="./"&&crate===window.currentCrate){link.className="current"}link.textContent=crate;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebarElems.appendChild(h3);sidebarElems.appendChild(ul)}function expandAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hasClass(e,"type-contents-toggle")&&!hasClass(e,"more-examples-toggle")){e.open=true}});innerToggle.title="collapse all docs";innerToggle.children[0].innerText="\u2212"}function collapseAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(e.parentNode.id!=="implementations-list"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});innerToggle.title="expand all docs";innerToggle.children[0].innerText="+"}function toggleAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){expandAllDocs()}else{collapseAllDocs()}}(function(){const toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}const hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";const hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";const hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){const list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),e=>{e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}})}());window.rustdoc_add_line_numbers_to_examples=()=>{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");if(line_numbers.length>0){return}const count=x.textContent.split("\n").length;const elems=[];for(let i=0;i{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");for(const node of line_numbers){parent.removeChild(node)}})};if(getSettingValue("line-numbers")==="true"){window.rustdoc_add_line_numbers_to_examples()}function showSidebar(){window.hideAllModals(false);const sidebar=document.getElementsByClassName("sidebar")[0];addClass(sidebar,"shown")}function hideSidebar(){const sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}window.addEventListener("resize",()=>{if(window.CURRENT_TOOLTIP_ELEMENT){const base=window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE;const force_visible=base.TOOLTIP_FORCE_VISIBLE;hideTooltip(false);if(force_visible){showTooltip(base);base.TOOLTIP_FORCE_VISIBLE=true}}});const mainElem=document.getElementById(MAIN_ID);if(mainElem){mainElem.addEventListener("click",hideSidebar)}onEachLazy(document.querySelectorAll("a[href^='#']"),el=>{el.addEventListener("click",()=>{expandSection(el.hash.slice(1));hideSidebar()})});onEachLazy(document.querySelectorAll(".toggle > summary:not(.hideme)"),el=>{el.addEventListener("click",e=>{if(e.target.tagName!=="SUMMARY"&&e.target.tagName!=="A"){e.preventDefault()}})});function showTooltip(e){const notable_ty=e.getAttribute("data-notable-ty");if(!window.NOTABLE_TRAITS&¬able_ty){const data=document.getElementById("notable-traits-data");if(data){window.NOTABLE_TRAITS=JSON.parse(data.innerText)}else{throw new Error("showTooltip() called with notable without any notable traits!")}}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE===e){clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);return}window.hideAllModals(false);const wrapper=document.createElement("div");if(notable_ty){wrapper.innerHTML="
    "+window.NOTABLE_TRAITS[notable_ty]+"
    "}else{if(e.getAttribute("title")!==null){e.setAttribute("data-title",e.getAttribute("title"));e.removeAttribute("title")}if(e.getAttribute("data-title")!==null){const titleContent=document.createElement("div");titleContent.className="content";titleContent.appendChild(document.createTextNode(e.getAttribute("data-title")));wrapper.appendChild(titleContent)}}wrapper.className="tooltip popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideTooltip;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";const body=document.getElementsByTagName("body")[0];body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px")}wrapper.style.visibility="";window.CURRENT_TOOLTIP_ELEMENT=wrapper;window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE=e;clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);wrapper.onpointerenter=function(ev){if(ev.pointerType!=="mouse"){return}clearTooltipHoverTimeout(e)};wrapper.onpointerleave=function(ev){if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!elemIsInParent(ev.relatedTarget,e)){setTooltipHoverTimeout(e,false);addClass(wrapper,"fade-out")}}}function setTooltipHoverTimeout(element,show){clearTooltipHoverTimeout(element);if(!show&&!window.CURRENT_TOOLTIP_ELEMENT){return}if(show&&window.CURRENT_TOOLTIP_ELEMENT){return}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE!==element){return}element.TOOLTIP_HOVER_TIMEOUT=setTimeout(()=>{if(show){showTooltip(element)}else if(!element.TOOLTIP_FORCE_VISIBLE){hideTooltip(false)}},show?window.RUSTDOC_TOOLTIP_HOVER_MS:window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS)}function clearTooltipHoverTimeout(element){if(element.TOOLTIP_HOVER_TIMEOUT!==undefined){removeClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out");clearTimeout(element.TOOLTIP_HOVER_TIMEOUT);delete element.TOOLTIP_HOVER_TIMEOUT}}function tooltipBlurHandler(event){if(window.CURRENT_TOOLTIP_ELEMENT&&!elemIsInParent(document.activeElement,window.CURRENT_TOOLTIP_ELEMENT)&&!elemIsInParent(event.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT)&&!elemIsInParent(document.activeElement,window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE)&&!elemIsInParent(event.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE)){setTimeout(()=>hideTooltip(false),0)}}function hideTooltip(focus){if(window.CURRENT_TOOLTIP_ELEMENT){if(window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE){if(focus){window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.focus()}window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE=false}const body=document.getElementsByTagName("body")[0];body.removeChild(window.CURRENT_TOOLTIP_ELEMENT);clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);window.CURRENT_TOOLTIP_ELEMENT=null}}onEachLazy(document.getElementsByClassName("tooltip"),e=>{e.onclick=function(){this.TOOLTIP_FORCE_VISIBLE=this.TOOLTIP_FORCE_VISIBLE?false:true;if(window.CURRENT_TOOLTIP_ELEMENT&&!this.TOOLTIP_FORCE_VISIBLE){hideTooltip(true)}else{showTooltip(this);window.CURRENT_TOOLTIP_ELEMENT.setAttribute("tabindex","0");window.CURRENT_TOOLTIP_ELEMENT.focus();window.CURRENT_TOOLTIP_ELEMENT.onblur=tooltipBlurHandler}return false};e.onpointerenter=function(ev){if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(this,true)};e.onpointermove=function(ev){if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(this,true)};e.onpointerleave=function(ev){if(ev.pointerType!=="mouse"){return}if(!this.TOOLTIP_FORCE_VISIBLE&&!elemIsInParent(ev.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT)){setTooltipHoverTimeout(e,false);addClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out")}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){blurHandler(event,getHelpButton(),window.hidePopoverMenus)}function buildHelpMenu(){const book_info=document.createElement("span");const channel=getVar("channel");book_info.className="top";book_info.innerHTML=`You can find more information in \ +the rustdoc book.`;const shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"
    "+x[0].split(" ").map((y,index)=>((index&1)===0?""+y+"":" "+y+" ")).join("")+"
    "+x[1]+"
    ").join("");const div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

    Keyboard Shortcuts

    "+shortcuts+"
    ";const infos=[`For a full list of all search features, take a look here.`,"Prefix searches with a type followed by a colon (e.g., fn:) to \ + restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ + enum, trait, type, macro, \ + and const.","Search functions by type signature (e.g., vec -> usize or \ + -> vec or String, enum:Cow -> bool)","You can look for items with an exact name by putting double quotes around \ + your request: \"string\"","Look for functions that accept or return \ + slices and \ + arrays by writing \ + square brackets (e.g., -> [u8] or [] -> Option)","Look for items inside another one by searching for a path: vec::Vec",].map(x=>"

    "+x+"

    ").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

    Search Tricks

    "+infos;const rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";const rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);const container=document.createElement("div");if(!isHelpPage){container.className="popover"}container.id="help";container.style.display="none";const side_by_side=document.createElement("div");side_by_side.className="side-by-side";side_by_side.appendChild(div_shortcuts);side_by_side.appendChild(div_infos);container.appendChild(book_info);container.appendChild(side_by_side);container.appendChild(rustdoc_version);if(isHelpPage){const help_section=document.createElement("section");help_section.appendChild(container);document.getElementById("main-content").appendChild(help_section);container.style.display="block"}else{const help_button=getHelpButton();help_button.appendChild(container);container.onblur=helpBlurHandler;help_button.onblur=helpBlurHandler;help_button.children[0].onblur=helpBlurHandler}return container}window.hideAllModals=function(switchFocus){hideSidebar();window.hidePopoverMenus();hideTooltip(switchFocus)};window.hidePopoverMenus=function(){onEachLazy(document.querySelectorAll(".search-form .popover"),elem=>{elem.style.display="none"})};function getHelpMenu(buildNeeded){let menu=getHelpButton().querySelector(".popover");if(!menu&&buildNeeded){menu=buildHelpMenu()}return menu}function showHelp(){getHelpButton().querySelector("a").focus();const menu=getHelpMenu(true);if(menu.style.display==="none"){window.hideAllModals();menu.style.display=""}}if(isHelpPage){showHelp();document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault()})}else{document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault();const menu=getHelpMenu(true);const shouldShowHelp=menu.style.display==="none";if(shouldShowHelp){showHelp()}else{window.hidePopoverMenus()}})}setMobileTopbar();addSidebarItems();addSidebarCrates();onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){let reset_button_timeout=null;const but=document.getElementById("copy-path");if(!but){return}but.onclick=()=>{const parent=but.parentElement;const path=[];onEach(parent.childNodes,child=>{if(child.tagName==="A"){path.push(child.textContent)}});const el=document.createElement("textarea");el.value=path.join("::");el.setAttribute("readonly","");el.style.position="absolute";el.style.left="-9999px";document.body.appendChild(el);el.select();document.execCommand("copy");document.body.removeChild(el);but.children[0].style.display="none";let tmp;if(but.childNodes.length<2){tmp=document.createTextNode("✓");but.appendChild(tmp)}else{onEachLazy(but.childNodes,e=>{if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent="✓"}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent="";reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}()) \ No newline at end of file diff --git a/doc/static.files/main-98a684e84ae5b08b.js b/doc/static.files/main-98a684e84ae5b08b.js deleted file mode 100644 index 1a1db3b0..00000000 --- a/doc/static.files/main-98a684e84ae5b08b.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict";function getVar(name){const el=document.getElementById("rustdoc-vars");if(el){return el.attributes["data-"+name].value}else{return null}}function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}function hideMain(){addClass(document.getElementById(MAIN_ID),"hidden")}function showMain(){removeClass(document.getElementById(MAIN_ID),"hidden")}function elemIsInParent(elem,parent){while(elem&&elem!==document.body){if(elem===parent){return true}elem=elem.parentElement}return false}function blurHandler(event,parentElem,hideCallback){if(!elemIsInParent(document.activeElement,parentElem)&&!elemIsInParent(event.relatedTarget,parentElem)){hideCallback()}}window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");function setMobileTopbar(){const mobileLocationTitle=document.querySelector(".mobile-topbar h2");const locationTitle=document.querySelector(".sidebar h2.location");if(mobileLocationTitle&&locationTitle){mobileLocationTitle.innerHTML=locationTitle.innerHTML}}function getVirtualKey(ev){if("key"in ev&&typeof ev.key!=="undefined"){return ev.key}const c=ev.charCode||ev.keyCode;if(c===27){return"Escape"}return String.fromCharCode(c)}const MAIN_ID="main-content";const SETTINGS_BUTTON_ID="settings-menu";const ALTERNATIVE_DISPLAY_ID="alternative-display";const NOT_DISPLAYED_ID="not-displayed";const HELP_BUTTON_ID="help-button";function getSettingsButton(){return document.getElementById(SETTINGS_BUTTON_ID)}function getHelpButton(){return document.getElementById(HELP_BUTTON_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}function getOrCreateSection(id,classes){let el=document.getElementById(id);if(!el){el=document.createElement("section");el.id=id;el.className=classes;insertAfter(el,document.getElementById(MAIN_ID))}return el}function getAlternativeDisplayElem(){return getOrCreateSection(ALTERNATIVE_DISPLAY_ID,"content hidden")}function getNotDisplayedElem(){return getOrCreateSection(NOT_DISPLAYED_ID,"hidden")}function switchDisplayedElement(elemToDisplay){const el=getAlternativeDisplayElem();if(el.children.length>0){getNotDisplayedElem().appendChild(el.firstElementChild)}if(elemToDisplay===null){addClass(el,"hidden");showMain();return}el.appendChild(elemToDisplay);hideMain();removeClass(el,"hidden")}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function loadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.rel="stylesheet";document.getElementsByTagName("head")[0].appendChild(link)}(function(){const isHelpPage=window.location.pathname.endsWith("/help.html");function loadScript(url){const script=document.createElement("script");script.src=url;document.head.append(script)}getSettingsButton().onclick=event=>{if(event.ctrlKey||event.altKey||event.metaKey){return}window.hideAllModals(false);addClass(getSettingsButton(),"rotate");event.preventDefault();loadCss(getVar("static-root-path")+getVar("settings-css"));loadScript(getVar("static-root-path")+getVar("settings-js"))};window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:()=>{let el=document.getElementById("search");if(!el){el=document.createElement("section");el.id="search";getNotDisplayedElem().appendChild(el)}return el},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:()=>{if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},isDisplayed:()=>searchState.outputElement().parentElement.id===ALTERNATIVE_DISPLAY_ID,focus:()=>{searchState.input.focus()},defocus:()=>{searchState.input.blur()},showResults:search=>{if(search===null||typeof search==="undefined"){search=searchState.outputElement()}switchDisplayedElement(search);searchState.mouseMovedAfterSearch=false;document.title=searchState.title},hideResults:()=>{switchDisplayedElement(null);document.title=searchState.titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState(null,window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}},getQueryStringParams:()=>{const params={};window.location.search.substring(1).split("&").map(s=>{const pair=s.split("=");params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},setup:()=>{const search_input=searchState.input;if(!searchState.input){return}let searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(getVar("static-root-path")+getVar("search-js"));loadScript(resourcePath("search-index",".js"))}}search_input.addEventListener("focus",()=>{search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!==""){loadSearch()}const params=searchState.getQueryStringParams();if(params.search!==undefined){searchState.setLoadingSearch();loadSearch()}},setLoadingSearch:()=>{const search=searchState.outputElement();search.innerHTML="

    "+searchState.loadingText+"

    ";searchState.showResults(search)},};function getPageId(){if(window.location.hash){const tmp=window.location.hash.replace(/^#/,"");if(tmp.length>0){return tmp}}return null}const toggleAllDocsId="toggle-all-docs";let savedHash="";function handleHashes(ev){if(ev!==null&&searchState.isDisplayed()&&ev.newURL){switchDisplayedElement(null);const hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}const elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}if(savedHash!==window.location.hash){savedHash=window.location.hash;if(savedHash.length===0){return}expandSection(savedHash.slice(1))}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function handleEscape(ev){searchState.clearInputTimeout();switchDisplayedElement(null);if(browserSupportsHistoryApi()){history.replaceState(null,window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}ev.preventDefault();searchState.defocus();window.hideAllModals(true)}function handleShortcut(ev){const disableShortcuts=getSettingValue("disable-shortcuts")==="true";if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"&&document.activeElement.type!=="checkbox"&&document.activeElement.type!=="radio"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":ev.preventDefault();searchState.focus();break;case"+":ev.preventDefault();expandAllDocs();break;case"-":ev.preventDefault();collapseAllDocs();break;case"?":showHelp();break;default:break}}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);function addSidebarItems(){if(!window.SIDEBAR_ITEMS){return}const sidebar=document.getElementsByClassName("sidebar-elems")[0];function block(shortty,id,longty){const filtered=window.SIDEBAR_ITEMS[shortty];if(!filtered){return}const h3=document.createElement("h3");h3.innerHTML=`${longty}`;const ul=document.createElement("ul");ul.className="block "+shortty;for(const name of filtered){let path;if(shortty==="mod"){path=name+"/index.html"}else{path=shortty+"."+name+".html"}const current_page=document.location.href.split("/").pop();const link=document.createElement("a");link.href=path;if(path===current_page){link.className="current"}link.textContent=name;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(h3);sidebar.appendChild(ul)}if(sidebar){block("primitive","primitives","Primitive Types");block("mod","modules","Modules");block("macro","macros","Macros");block("struct","structs","Structs");block("enum","enums","Enums");block("union","unions","Unions");block("constant","constants","Constants");block("static","static","Statics");block("trait","traits","Traits");block("fn","functions","Functions");block("type","types","Type Definitions");block("foreigntype","foreign-types","Foreign Types");block("keyword","keywords","Keywords");block("traitalias","trait-aliases","Trait Aliases")}}window.register_implementors=imp=>{const implementors=document.getElementById("implementors-list");const synthetic_implementors=document.getElementById("synthetic-implementors-list");const inlined_types=new Set();const TEXT_IDX=0;const SYNTHETIC_IDX=1;const TYPES_IDX=2;if(synthetic_implementors){onEachLazy(synthetic_implementors.getElementsByClassName("impl"),el=>{const aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(alias=>{inlined_types.add(alias)})})}let currentNbImpls=implementors.getElementsByClassName("impl").length;const traitName=document.querySelector(".main-heading h1 > .trait").textContent;const baseIdName="impl-"+traitName+"-";const libs=Object.getOwnPropertyNames(imp);const script=document.querySelector("script[data-ignore-extern-crates]");const ignoreExternCrates=script?script.getAttribute("data-ignore-extern-crates"):"";for(const lib of libs){if(lib===window.currentCrate||ignoreExternCrates.indexOf(lib)!==-1){continue}const structs=imp[lib];struct_loop:for(const struct of structs){const list=struct[SYNTHETIC_IDX]?synthetic_implementors:implementors;if(struct[SYNTHETIC_IDX]){for(const struct_type of struct[TYPES_IDX]){if(inlined_types.has(struct_type)){continue struct_loop}inlined_types.add(struct_type)}}const code=document.createElement("h3");code.innerHTML=struct[TEXT_IDX];addClass(code,"code-header");onEachLazy(code.getElementsByTagName("a"),elem=>{const href=elem.getAttribute("href");if(href&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});const currentId=baseIdName+currentNbImpls;const anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");const display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}function addSidebarCrates(){if(!window.ALL_CRATES){return}const sidebarElems=document.getElementsByClassName("sidebar-elems")[0];if(!sidebarElems){return}const h3=document.createElement("h3");h3.innerHTML="Crates";const ul=document.createElement("ul");ul.className="block crate";for(const crate of window.ALL_CRATES){const link=document.createElement("a");link.href=window.rootPath+crate+"/index.html";if(window.rootPath!=="./"&&crate===window.currentCrate){link.className="current"}link.textContent=crate;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebarElems.appendChild(h3);sidebarElems.appendChild(ul)}function expandAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hasClass(e,"type-contents-toggle")&&!hasClass(e,"more-examples-toggle")){e.open=true}});innerToggle.title="collapse all docs";innerToggle.children[0].innerText="\u2212"}function collapseAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(e.parentNode.id!=="implementations-list"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});innerToggle.title="expand all docs";innerToggle.children[0].innerText="+"}function toggleAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){expandAllDocs()}else{collapseAllDocs()}}(function(){const toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}const hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";const hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";const hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){const list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),e=>{e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}});const pageId=getPageId();if(pageId!==null){expandSection(pageId)}}());window.rustdoc_add_line_numbers_to_examples=()=>{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");if(line_numbers.length>0){return}const count=x.textContent.split("\n").length;const elems=[];for(let i=0;i{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");for(const node of line_numbers){parent.removeChild(node)}})};if(getSettingValue("line-numbers")==="true"){window.rustdoc_add_line_numbers_to_examples()}let oldSidebarScrollPosition=null;window.rustdocMobileScrollLock=function(){const mobile_topbar=document.querySelector(".mobile-topbar");if(window.innerWidth<=window.RUSTDOC_MOBILE_BREAKPOINT){oldSidebarScrollPosition=window.scrollY;document.body.style.width=`${document.body.offsetWidth}px`;document.body.style.position="fixed";document.body.style.top=`-${oldSidebarScrollPosition}px`;if(mobile_topbar){mobile_topbar.style.top=`${oldSidebarScrollPosition}px`;mobile_topbar.style.position="relative"}}else{oldSidebarScrollPosition=null}};window.rustdocMobileScrollUnlock=function(){const mobile_topbar=document.querySelector(".mobile-topbar");if(oldSidebarScrollPosition!==null){document.body.style.width="";document.body.style.position="";document.body.style.top="";if(mobile_topbar){mobile_topbar.style.top="";mobile_topbar.style.position=""}window.scrollTo(0,oldSidebarScrollPosition);oldSidebarScrollPosition=null}};function showSidebar(){window.hideAllModals(false);window.rustdocMobileScrollLock();const sidebar=document.getElementsByClassName("sidebar")[0];addClass(sidebar,"shown")}function hideSidebar(){window.rustdocMobileScrollUnlock();const sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}window.addEventListener("resize",()=>{if(window.innerWidth>window.RUSTDOC_MOBILE_BREAKPOINT&&oldSidebarScrollPosition!==null){hideSidebar()}if(window.CURRENT_TOOLTIP_ELEMENT){const base=window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE;const force_visible=base.TOOLTIP_FORCE_VISIBLE;hideTooltip(false);if(force_visible){showTooltip(base);base.TOOLTIP_FORCE_VISIBLE=true}}});const mainElem=document.getElementById(MAIN_ID);if(mainElem){mainElem.addEventListener("click",hideSidebar)}onEachLazy(document.querySelectorAll("a[href^='#']"),el=>{el.addEventListener("click",()=>{expandSection(el.hash.slice(1));hideSidebar()})});onEachLazy(document.querySelectorAll(".toggle > summary:not(.hideme)"),el=>{el.addEventListener("click",e=>{if(e.target.tagName!=="SUMMARY"&&e.target.tagName!=="A"){e.preventDefault()}})});function showTooltip(e){const notable_ty=e.getAttribute("data-notable-ty");if(!window.NOTABLE_TRAITS&¬able_ty){const data=document.getElementById("notable-traits-data");if(data){window.NOTABLE_TRAITS=JSON.parse(data.innerText)}else{throw new Error("showTooltip() called with notable without any notable traits!")}}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE===e){return}window.hideAllModals(false);const wrapper=document.createElement("div");if(notable_ty){wrapper.innerHTML="
    "+window.NOTABLE_TRAITS[notable_ty]+"
    "}else if(e.getAttribute("title")!==undefined){const titleContent=document.createElement("div");titleContent.className="content";titleContent.appendChild(document.createTextNode(e.getAttribute("title")));wrapper.appendChild(titleContent)}wrapper.className="tooltip popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideTooltip;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";const body=document.getElementsByTagName("body")[0];body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px")}wrapper.style.visibility="";window.CURRENT_TOOLTIP_ELEMENT=wrapper;window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE=e;wrapper.onpointerleave=function(ev){if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!elemIsInParent(event.relatedTarget,e)){hideTooltip(true)}}}function tooltipBlurHandler(event){if(window.CURRENT_TOOLTIP_ELEMENT&&!elemIsInParent(document.activeElement,window.CURRENT_TOOLTIP_ELEMENT)&&!elemIsInParent(event.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT)&&!elemIsInParent(document.activeElement,window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE)&&!elemIsInParent(event.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE)){setTimeout(()=>hideTooltip(false),0)}}function hideTooltip(focus){if(window.CURRENT_TOOLTIP_ELEMENT){if(window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE){if(focus){window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.focus()}window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE=false}const body=document.getElementsByTagName("body")[0];body.removeChild(window.CURRENT_TOOLTIP_ELEMENT);window.CURRENT_TOOLTIP_ELEMENT=null}}onEachLazy(document.getElementsByClassName("tooltip"),e=>{e.onclick=function(){this.TOOLTIP_FORCE_VISIBLE=this.TOOLTIP_FORCE_VISIBLE?false:true;if(window.CURRENT_TOOLTIP_ELEMENT&&!this.TOOLTIP_FORCE_VISIBLE){hideTooltip(true)}else{showTooltip(this);window.CURRENT_TOOLTIP_ELEMENT.setAttribute("tabindex","0");window.CURRENT_TOOLTIP_ELEMENT.focus();window.CURRENT_TOOLTIP_ELEMENT.onblur=tooltipBlurHandler}return false};e.onpointerenter=function(ev){if(ev.pointerType!=="mouse"){return}showTooltip(this)};e.onpointerleave=function(ev){if(ev.pointerType!=="mouse"){return}if(!this.TOOLTIP_FORCE_VISIBLE&&!elemIsInParent(ev.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT)){hideTooltip(true)}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){blurHandler(event,getHelpButton(),window.hidePopoverMenus)}function buildHelpMenu(){const book_info=document.createElement("span");book_info.className="top";book_info.innerHTML="You can find more information in \ - the rustdoc book.";const shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"
    "+x[0].split(" ").map((y,index)=>((index&1)===0?""+y+"":" "+y+" ")).join("")+"
    "+x[1]+"
    ").join("");const div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

    Keyboard Shortcuts

    "+shortcuts+"
    ";const infos=["Prefix searches with a type followed by a colon (e.g., fn:) to \ - restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ - enum, trait, type, macro, \ - and const.","Search functions by type signature (e.g., vec -> usize or \ - -> vec)","Search multiple things at once by splitting your query with comma (e.g., \ - str,u8 or String,struct:Vec,test)","You can look for items with an exact name by putting double quotes around \ - your request: \"string\"","Look for items inside another one by searching for a path: vec::Vec",].map(x=>"

    "+x+"

    ").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

    Search Tricks

    "+infos;const rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";const rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);const container=document.createElement("div");if(!isHelpPage){container.className="popover"}container.id="help";container.style.display="none";const side_by_side=document.createElement("div");side_by_side.className="side-by-side";side_by_side.appendChild(div_shortcuts);side_by_side.appendChild(div_infos);container.appendChild(book_info);container.appendChild(side_by_side);container.appendChild(rustdoc_version);if(isHelpPage){const help_section=document.createElement("section");help_section.appendChild(container);document.getElementById("main-content").appendChild(help_section);container.style.display="block"}else{const help_button=getHelpButton();help_button.appendChild(container);container.onblur=helpBlurHandler;help_button.onblur=helpBlurHandler;help_button.children[0].onblur=helpBlurHandler}return container}window.hideAllModals=function(switchFocus){hideSidebar();window.hidePopoverMenus();hideTooltip(switchFocus)};window.hidePopoverMenus=function(){onEachLazy(document.querySelectorAll(".search-form .popover"),elem=>{elem.style.display="none"})};function getHelpMenu(buildNeeded){let menu=getHelpButton().querySelector(".popover");if(!menu&&buildNeeded){menu=buildHelpMenu()}return menu}function showHelp(){getHelpButton().querySelector("a").focus();const menu=getHelpMenu(true);if(menu.style.display==="none"){window.hideAllModals();menu.style.display=""}}if(isHelpPage){showHelp();document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault()})}else{document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault();const menu=getHelpMenu(true);const shouldShowHelp=menu.style.display==="none";if(shouldShowHelp){showHelp()}else{window.hidePopoverMenus()}})}setMobileTopbar();addSidebarItems();addSidebarCrates();onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){let reset_button_timeout=null;const but=document.getElementById("copy-path");if(!but){return}but.onclick=()=>{const parent=but.parentElement;const path=[];onEach(parent.childNodes,child=>{if(child.tagName==="A"){path.push(child.textContent)}});const el=document.createElement("textarea");el.value=path.join("::");el.setAttribute("readonly","");el.style.position="absolute";el.style.left="-9999px";document.body.appendChild(el);el.select();document.execCommand("copy");document.body.removeChild(el);but.children[0].style.display="none";let tmp;if(but.childNodes.length<2){tmp=document.createTextNode("✓");but.appendChild(tmp)}else{onEachLazy(but.childNodes,e=>{if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent="✓"}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent="";reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}()) \ No newline at end of file diff --git a/doc/static.files/noscript-13285aec31fa243e.css b/doc/static.files/noscript-13285aec31fa243e.css deleted file mode 100644 index c32e0cb1..00000000 --- a/doc/static.files/noscript-13285aec31fa243e.css +++ /dev/null @@ -1 +0,0 @@ - #main-content .attributes{margin-left:0 !important;}#copy-path{display:none;}nav.sub{display:none;}.source .sidebar{display:none;}.notable-traits{display:none;} \ No newline at end of file diff --git a/doc/static.files/noscript-cffde32267a19fd6.css b/doc/static.files/noscript-cffde32267a19fd6.css new file mode 100644 index 00000000..12d3f6dd --- /dev/null +++ b/doc/static.files/noscript-cffde32267a19fd6.css @@ -0,0 +1 @@ + #main-content .attributes{margin-left:0 !important;}#copy-path{display:none;}nav.sub{display:none;}.src .sidebar{display:none;}.notable-traits{display:none;} \ No newline at end of file diff --git a/doc/static.files/rustdoc-c4dbdcde0fbd8430.css b/doc/static.files/rustdoc-c4dbdcde0fbd8430.css deleted file mode 100644 index afd98f0e..00000000 --- a/doc/static.files/rustdoc-c4dbdcde0fbd8430.css +++ /dev/null @@ -1,8 +0,0 @@ - @font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular-018c141bf0843ffd.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium-8f9a781e4970d388.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular-46f98efaafac5295.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2") format("woff2");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{box-sizing:border-box;}html{content:"";}@media (prefers-color-scheme:light){html{content:"light";}}@media (prefers-color-scheme:dark){html{content:"dark";}}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;font-feature-settings:"kern","liga";background-color:var(--main-background-color);color:var(--main-color);}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:25px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}.docblock>h2:first-child,.docblock>h3:first-child,.docblock>h4:first-child,.docblock>h5:first-child,.docblock>h6:first-child{margin-top:0;}.main-heading h1{margin:0;padding:0;flex-grow:1;overflow-wrap:break-word;overflow-wrap:anywhere;}.main-heading{display:flex;flex-wrap:wrap;padding-bottom:6px;margin-bottom:15px;}.content h2,.top-doc .docblock>h3,.top-doc .docblock>h4{border-bottom:1px solid var(--headings-border-bottom-color);}h1,h2{line-height:1.25;padding-top:3px;padding-bottom:9px;}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;margin:0;padding:0;white-space:pre-wrap;}#crate-search,h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,.search-input,.search-results .result-name,.item-name>a,.out-of-band,span.since,a.srclink,#help-button>a,summary.hideme,.scraped-example-list,ul.all-items{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,h1 a,.search-results a,.stab,.result-name .primitive>i,.result-name .keyword>i{color:var(--main-color);}.content span.enum,.content a.enum,.content span.struct,.content a.struct,.content span.union,.content a.union,.content span.primitive,.content a.primitive,.content span.type,.content a.type,.content span.foreigntype,.content a.foreigntype{color:var(--type-link-color);}.content span.trait,.content a.trait,.content span.traitalias,.content a.traitalias{color:var(--trait-link-color);}.content span.associatedtype,.content a.associatedtype,.content span.constant,.content a.constant,.content span.static,.content a.static{color:var(--assoc-item-link-color);}.content span.fn,.content a.fn,.content span.method,.content a.method,.content span.tymethod,.content a.tymethod{color:var(--function-link-color);}.content span.attr,.content a.attr,.content span.derive,.content a.derive,.content span.macro,.content a.macro{color:var(--macro-link-color);}.content span.mod,.content a.mod{color:var(--mod-link-color);}.content span.keyword,.content a.keyword{color:var(--keyword-link-color);}a{color:var(--link-color);text-decoration:none;}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p{margin:0 0 .75em 0;}p:last-child{margin:0;}button{padding:1px 6px;cursor:pointer;}button#toggle-all-docs{padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.source main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}details:not(.toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;line-height:1.5;}pre.item-decl{overflow-x:auto;}.item-decl .type-contents-toggle{contain:initial;}.source .content pre{padding:20px;}.rustdoc.source .example-wrap>pre.src-line-numbers{padding:20px 0 20px 4px;}img{max-width:100%;}.sub-logo-container,.logo-container{line-height:0;display:block;}.sub-logo-container{margin-right:32px;}.sub-logo-container>img{height:60px;width:60px;object-fit:contain;}.rust-logo{filter:var(--rust-logo-filter);}.sidebar{font-size:0.875rem;flex:0 0 200px;overflow-y:scroll;position:sticky;height:100vh;top:0;left:0;}.rustdoc.source .sidebar{flex-basis:50px;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;}.sidebar,.mobile-topbar,.sidebar-menu-toggle,#src-sidebar-toggle,#source-sidebar{background-color:var(--sidebar-background-color);}#src-sidebar-toggle>button:hover,#src-sidebar-toggle>button:focus{background-color:var(--sidebar-background-color-hover);}.source .sidebar>*:not(#src-sidebar-toggle){visibility:hidden;}.source-sidebar-expanded .source .sidebar{overflow-y:auto;flex-basis:300px;}.source-sidebar-expanded .source .sidebar>*:not(#src-sidebar-toggle){visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;scrollbar-color:var(--scrollbar-color);}.sidebar{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color);}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;background-color:var(--scrollbar-track-background-color);}.sidebar::-webkit-scrollbar-track{background-color:var(--scrollbar-track-background-color);}::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-background-color);}.hidden{display:none !important;}.sidebar .logo-container{margin-top:10px;margin-bottom:10px;text-align:center;}.version{overflow-wrap:break-word;}.logo-container>img{height:100px;width:100px;}ul.block,.block li{padding:0;margin:0;list-style:none;}.sidebar-elems a,.sidebar>h2 a{display:block;padding:0.25rem;margin-left:-0.25rem;}.sidebar h2{overflow-wrap:anywhere;padding:0;margin:0.7rem 0;}.sidebar h3{font-size:1.125rem;padding:0;margin:0;}.sidebar-elems,.sidebar>h2{padding-left:24px;}.sidebar a{color:var(--sidebar-link-color);}.sidebar .current,.sidebar a:hover:not(.logo-container){background-color:var(--sidebar-current-link-background-color);}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.mobile-topbar{display:none;}.rustdoc .example-wrap{display:flex;position:relative;margin-bottom:10px;}.rustdoc .example-wrap:last-child{margin-bottom:0px;}.rustdoc .example-wrap>pre{margin:0;flex-grow:1;overflow:auto hidden;}.rustdoc .example-wrap>pre.example-line-numbers,.rustdoc .example-wrap>pre.src-line-numbers{flex-grow:0;min-width:fit-content;overflow:initial;text-align:right;-webkit-user-select:none;user-select:none;padding:14px 8px;color:var(--src-line-numbers-span-color);}.rustdoc .example-wrap>pre.src-line-numbers{padding:14px 0;}.src-line-numbers a,.src-line-numbers span{color:var(--src-line-numbers-span-color);padding:0 8px;}.src-line-numbers :target{background-color:transparent;border-right:none;padding:0 8px;}.src-line-numbers .line-highlighted{background-color:var(--src-line-number-highlighted-background-color);}.search-loading{text-align:center;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock :not(pre)>code,.docblock-short code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.more-examples-toggle):not(.example-wrap){max-width:100%;overflow-x:auto;}.out-of-band{flex-grow:0;font-size:1.125rem;}.docblock code,.docblock-short code,pre,.rustdoc.source .example-wrap{background-color:var(--code-block-background-color);}#main-content{position:relative;}.docblock table{margin:.5em 0;border-collapse:collapse;}.docblock table td,.docblock table th{padding:.5em;border:1px solid var(--border-color);}.docblock table tbody tr:nth-child(2n){background:var(--table-alt-row-background-color);}.method .where,.fn .where,.where.fmt-newline{display:block;white-space:pre-wrap;font-size:0.875rem;}.item-info{display:block;margin-left:24px;}.item-info code{font-size:0.875rem;}#main-content>.item-info{margin-left:0;}nav.sub{flex-grow:1;flex-flow:row nowrap;margin:4px 0 25px 0;display:flex;align-items:center;}.search-form{position:relative;display:flex;height:34px;flex-grow:1;}.source nav.sub{margin:0 0 15px 0;}.small-section-header{display:block;position:relative;}.small-section-header:hover>.anchor,.impl:hover>.anchor,.trait-impl:hover>.anchor,.variant:hover>.anchor{display:initial;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-15px;padding-right:8px;}h2.small-section-header>.anchor{padding-right:6px;}.main-heading a:hover,.example-wrap>pre.rust a:hover,.all-items a:hover,.docblock a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover,.docblock-short a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover,.item-info a{text-decoration:underline;}.crate.block a.current{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;padding:0;margin:0;}.item-table>li{display:table-row;}.item-table>li>div{display:table-cell;}.item-table>li>.item-name{padding-right:1.25rem;}.search-results-title{margin-top:0;white-space:nowrap;display:flex;align-items:baseline;}#crate-search-div{position:relative;min-width:5em;}#crate-search{min-width:115px;padding:0 23px 0 4px;max-width:100%;text-overflow:ellipsis;border:1px solid var(--border-color);border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;background-color:var(--main-background-color);color:inherit;line-height:1.5;font-weight:500;}#crate-search:hover,#crate-search:focus{border-color:var(--crate-search-hover-border);}@-moz-document url-prefix(){#crate-search{padding-left:0px;padding-right:19px;}}#crate-search-div::after{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;content:"";background-repeat:no-repeat;background-size:20px;background-position:calc(100% - 2px) 56%;background-image:url('data:image/svg+xml, \ - ');filter:var(--crate-search-div-filter);}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:var(--crate-search-div-hover-filter);}#crate-search>option{font-size:1rem;}.search-input{-webkit-appearance:none;outline:none;border:1px solid var(--border-color);border-radius:2px;padding:8px;font-size:1rem;flex-grow:1;background-color:var(--button-background-color);color:var(--search-color);}.search-input:focus{border-color:var(--search-input-focused-border-color);}.search-results{display:none;}.search-results.active{display:block;}.search-results>a{display:flex;margin-left:2px;margin-right:2px;border-bottom:1px solid var(--search-result-border-color);gap:1em;}.search-results>a>div{flex:1;}.search-results>a>div.desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.search-results a:hover,.search-results a:focus{background-color:var(--search-result-link-focus-background-color);}.search-results .result-name span.alias{color:var(--search-results-alias-color);}.search-results .result-name span.grey{color:var(--search-results-grey-color);}.popover{position:absolute;top:100%;right:0;z-index:2;margin-top:7px;border-radius:3px;border:1px solid var(--border-color);background-color:var(--main-background-color);color:var(--main-color);--popover-arrow-offset:11px;}.popover::before{content:'';position:absolute;right:var(--popover-arrow-offset);border:solid var(--border-color);border-width:1px 1px 0 0;background-color:var(--main-background-color);padding:4px;transform:rotate(-45deg);top:-5px;}#help.popover{max-width:600px;--popover-arrow-offset:48px;}#help dt{float:left;clear:left;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{margin:10px 0;border-bottom:1px solid var(--border-color);padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid var(--border-color);}.side-by-side>div{width:50%;float:left;padding:0 20px 20px 17px;}.item-info .stab{min-height:36px;display:flex;padding:3px;margin-bottom:5px;}.item-name .stab{margin-left:0.3125em;}.stab{padding:0 2px;font-size:0.875rem;font-weight:normal;color:var(--main-color);background-color:var(--stab-background-color);width:fit-content;align-items:center;white-space:pre-wrap;border-radius:3px;display:inline-flex;vertical-align:text-bottom;}.stab.portability>code{background:none;color:var(--stab-code-color);}.stab .emoji{font-size:1.25rem;margin-right:0.3rem;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;float:right;}.rightside:not(a),.out-of-band{color:var(--right-side-color);}pre.rust{tab-size:4;-moz-tab-size:4;}pre.rust .kw{color:var(--code-highlight-kw-color);}pre.rust .kw-2{color:var(--code-highlight-kw-2-color);}pre.rust .lifetime{color:var(--code-highlight-lifetime-color);}pre.rust .prelude-ty{color:var(--code-highlight-prelude-color);}pre.rust .prelude-val{color:var(--code-highlight-prelude-val-color);}pre.rust .string{color:var(--code-highlight-string-color);}pre.rust .number{color:var(--code-highlight-number-color);}pre.rust .bool-val{color:var(--code-highlight-literal-color);}pre.rust .self{color:var(--code-highlight-self-color);}pre.rust .attr{color:var(--code-highlight-attribute-color);}pre.rust .macro,pre.rust .macro-nonterminal{color:var(--code-highlight-macro-color);}pre.rust .question-mark{font-weight:bold;color:var(--code-highlight-question-mark-color);}pre.rust .comment{color:var(--code-highlight-comment-color);}pre.rust .doccomment{color:var(--code-highlight-doc-comment-color);}.rustdoc.source .example-wrap pre.rust a{background:var(--codeblock-link-background);}.example-wrap.compile_fail,.example-wrap.should_panic{border-left:2px solid var(--codeblock-error-color);}.ignore.example-wrap{border-left:2px solid var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover,.example-wrap.should_panic:hover{border-left:2px solid var(--codeblock-error-hover-color);}.example-wrap.ignore:hover{border-left:2px solid var(--codeblock-ignore-hover-color);}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip{color:var(--codeblock-error-color);}.example-wrap.ignore .tooltip{color:var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover .tooltip,.example-wrap.should_panic:hover .tooltip{color:var(--codeblock-error-hover-color);}.example-wrap.ignore:hover .tooltip{color:var(--codeblock-ignore-hover-color);}.example-wrap .tooltip{position:absolute;display:block;left:-25px;top:5px;margin:0;line-height:1;}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip,.example-wrap.ignore .tooltip{font-weight:bold;font-size:1.25rem;}a.test-arrow{visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.375rem;top:5px;right:5px;z-index:1;color:var(--test-arrow-color);background-color:var(--test-arrow-background-color);}a.test-arrow:hover{color:var(--test-arrow-hover-color);background-color:var(--test-arrow-hover-background-color);}.example-wrap:hover .test-arrow{visibility:visible;}.code-attribute{font-weight:300;color:var(--code-attribute-color);}.item-spacer{width:100%;height:12px;display:block;}.out-of-band>span.since{font-size:1.25rem;}.sub-variant h4{font-size:1rem;font-weight:400;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}:target{padding-right:3px;background-color:var(--target-background-color);border-right:3px solid var(--target-border-color);}.code-header a.tooltip{color:inherit;margin-right:15px;position:relative;}a.tooltip:hover::after{position:absolute;top:calc(100% - 10px);left:-15px;right:-15px;height:20px;content:"\00a0";}.popover.tooltip .content{margin:0.25em 0.5em;}.popover.tooltip .content pre,.popover.tooltip .content code{background:transparent;margin:0;padding:0;font-size:1.25rem;white-space:pre-wrap;}.popover.tooltip .content>h3:first-child{margin:0 0 5px 0;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#search-tabs{display:flex;flex-direction:row;gap:1px;margin-bottom:4px;}#search-tabs button{text-align:center;font-size:1.125rem;border:0;border-top:2px solid;flex:1;line-height:1.5;color:inherit;}#search-tabs button:not(.selected){background-color:var(--search-tab-button-not-selected-background);border-top-color:var(--search-tab-button-not-selected-border-top-color);}#search-tabs button:hover,#search-tabs button.selected{background-color:var(--search-tab-button-selected-background);border-top-color:var(--search-tab-button-selected-border-top-color);}#search-tabs .count{font-size:1rem;color:var(--search-tab-title-count-color);}#search .error code{border-radius:3px;background-color:var(--search-error-code-background-color);}#src-sidebar-toggle{position:sticky;top:0;left:0;font-size:1.25rem;border-bottom:1px solid;display:flex;height:40px;justify-content:stretch;align-items:stretch;z-index:10;}#source-sidebar{width:100%;overflow:auto;}#source-sidebar>.title{font-size:1.5rem;text-align:center;border-bottom:1px solid var(--border-color);margin-bottom:6px;}#source-sidebar div.files>a:hover,details.dir-entry summary:hover,#source-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:var(--source-sidebar-background-hover);}#source-sidebar div.files>a.selected{background-color:var(--source-sidebar-background-selected);}#src-sidebar-toggle>button{font-size:inherit;font-weight:bold;background:none;color:inherit;text-align:center;border:none;outline:none;flex:1 1;-webkit-appearance:none;opacity:1;}#settings-menu,#help-button{margin-left:4px;display:flex;}#settings-menu>a,#help-button>a{display:flex;align-items:center;justify-content:center;background-color:var(--button-background-color);border:1px solid var(--border-color);border-radius:2px;color:var(--settings-button-color);font-size:20px;width:33px;}#settings-menu>a:hover,#settings-menu>a:focus,#help-button>a:hover,#help-button>a:focus{border-color:var(--settings-button-border-focus);}#copy-path{color:var(--copy-path-button-color);background:var(--main-background-color);height:34px;margin-left:10px;padding:0;padding-left:2px;border:0;width:33px;}#copy-path>img{filter:var(--copy-path-img-filter);}#copy-path:hover>img{filter:var(--copy-path-img-hover-filter);}@keyframes rotating{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}#settings-menu.rotate>a img{animation:rotating 2s linear infinite;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px var(--border-color);border-radius:3px;color:var(--kbd-color);background-color:var(--kbd-background);box-shadow:inset 0 -1px 0 var(--kbd-box-shadow-color);}ul.all-items>li{list-style:none;}details.dir-entry{padding-left:4px;}details.dir-entry>summary{margin:0 0 0 -4px;padding:0 0 0 4px;cursor:pointer;}details.dir-entry div.folders,details.dir-entry div.files{padding-left:23px;}details.dir-entry a{display:block;}details.toggle{contain:layout;position:relative;}details.toggle>summary.hideme{cursor:pointer;font-size:1rem;}details.toggle>summary{list-style:none;outline:none;}details.toggle>summary::-webkit-details-marker,details.toggle>summary::marker{display:none;}details.toggle>summary.hideme>span{margin-left:9px;}details.toggle>summary::before{background:url('data:image/svg+xml,') no-repeat top left;content:"";cursor:pointer;width:16px;height:16px;display:inline-block;vertical-align:middle;opacity:.5;filter:var(--toggle-filter);}details.toggle>summary.hideme>span,.more-examples-toggle summary,.more-examples-toggle .hide-more{color:var(--toggles-color);}details.toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.toggle>summary.hideme::after{content:"";}details.toggle>summary:focus::before,details.toggle>summary:hover::before{opacity:1;}details.toggle>summary:focus-visible::before{outline:1px dotted #000;outline-offset:1px;}details.non-exhaustive{margin-bottom:8px;}details.toggle>summary.hideme::before{position:relative;}details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.toggle[open] >summary.hideme{position:absolute;}details.toggle[open] >summary.hideme>span{display:none;}details.toggle[open] >summary::before{background:url('data:image/svg+xml,') no-repeat top left;}details.toggle[open] >summary::after{content:"Collapse";}.docblock summary>*{display:inline-block;}.docblock>.example-wrap:first-child .tooltip{margin-top:16px;}@media (max-width:700px){*[id]{scroll-margin-top:45px;}.rustdoc{display:block;}main{padding-left:15px;padding-top:0px;}.main-heading{flex-direction:column;}.out-of-band{text-align:left;margin-left:initial;padding:initial;}.out-of-band .since::before{content:"Since ";}.sidebar .logo-container,.sidebar .location{display:none;}.sidebar{position:fixed;top:45px;left:-1000px;z-index:11;height:calc(100vh - 45px);width:200px;}.source main,.rustdoc.source .sidebar{top:0;padding:0;height:100vh;border:0;}.sidebar.shown,.source-sidebar-expanded .source .sidebar,.rustdoc:not(.source) .sidebar:focus-within{left:0;}.mobile-topbar h2{padding-bottom:0;margin:auto 0.5em auto auto;overflow:hidden;font-size:24px;}.mobile-topbar h2 a{display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin:5px 0 5px 20px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.sidebar-menu-toggle{width:45px;font-size:32px;border:none;color:var(--main-color);}.sidebar-elems{margin-top:1em;}.anchor{display:none !important;}#search-tabs .count{display:block;}#main-content>details.toggle>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}#src-sidebar-toggle{position:fixed;left:1px;top:100px;width:30px;font-size:1.5rem;padding:0;z-index:10;border-top-right-radius:3px;border-bottom-right-radius:3px;border:1px solid;border-left:0;}.source-sidebar-expanded #src-sidebar-toggle{left:unset;top:unset;width:unset;border-top-right-radius:unset;border-bottom-right-radius:unset;position:sticky;border:0;border-bottom:1px solid;}#copy-path,#help-button{display:none;}.item-table,.item-row,.item-table>li,.item-table>li>div,.search-results>a,.search-results>a>div{display:block;}.search-results>a{padding:5px 0px;}.search-results>a>div.desc,.item-table>li>div.desc{padding-left:2em;}.source-sidebar-expanded .source .sidebar{max-width:100vw;width:100vw;}details.toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.toggle>summary:not(.hideme)::before,#main-content>details.toggle:not(.top-doc)>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}.impl-items>.item-info{margin-left:34px;}.source nav.sub{margin:0;padding:8px;}}@media (min-width:701px){.scraped-example-title{position:absolute;z-index:10;background:var(--main-background-color);bottom:8px;right:5px;padding:2px 4px;box-shadow:0 0 4px var(--main-background-color);}}@media print{nav.sidebar,nav.sub,.out-of-band,a.srclink,#copy-path,details.toggle[open] >summary::before,details.toggle>summary::before,details.toggle.top-doc>summary{display:none;}.docblock{margin-left:0;}main{padding:10px;}}@media (max-width:464px){.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}nav.sub{flex-direction:column;}.search-form{align-self:stretch;}.sub-logo-container>img{height:35px;width:35px;}}.variant,.implementors-toggle>summary,.impl,#implementors-list>.docblock,.impl-items>section,.impl-items>.toggle>summary,.methods>section,.methods>.toggle>summary{margin-bottom:0.75em;}.variants>.docblock,.implementors-toggle>.docblock,.impl-items>.toggle[open]:not(:last-child),.methods>.toggle[open]:not(:last-child),.implementors-toggle[open]:not(:last-child){margin-bottom:2em;}#trait-implementations-list .impl-items>.toggle:not(:last-child),#synthetic-implementations-list .impl-items>.toggle:not(:last-child),#blanket-implementations-list .impl-items>.toggle:not(:last-child){margin-bottom:1em;}.scraped-example-list .scrape-help{margin-left:10px;padding:0 4px;font-weight:normal;font-size:12px;position:relative;bottom:1px;border:1px solid var(--scrape-example-help-border-color);border-radius:50px;color:var(--scrape-example-help-color);}.scraped-example-list .scrape-help:hover{border-color:var(--scrape-example-help-hover-border-color);color:var(--scrape-example-help-hover-color);}.scraped-example{position:relative;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper{max-height:calc(1.5em * 5 + 10px);}.scraped-example:not(.expanded) .code-wrapper pre{overflow-y:hidden;padding-bottom:0;max-height:calc(1.5em * 5 + 10px);}.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper,.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper pre{max-height:calc(1.5em * 10 + 10px);}.scraped-example .code-wrapper .next,.scraped-example .code-wrapper .prev,.scraped-example .code-wrapper .expand{color:var(--main-color);position:absolute;top:0.25em;z-index:1;padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.scraped-example .code-wrapper .prev{right:2.25em;}.scraped-example .code-wrapper .next{right:1.25em;}.scraped-example .code-wrapper .expand{right:0.25em;}.scraped-example:not(.expanded) .code-wrapper::before,.scraped-example:not(.expanded) .code-wrapper::after{content:" ";width:100%;height:5px;position:absolute;z-index:1;}.scraped-example:not(.expanded) .code-wrapper::before{top:0;background:linear-gradient(to bottom,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example:not(.expanded) .code-wrapper::after{bottom:0;background:linear-gradient(to top,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example .code-wrapper .example-wrap{width:100%;overflow-y:hidden;margin-bottom:0;}.scraped-example:not(.expanded) .code-wrapper .example-wrap{overflow-x:hidden;}.scraped-example .example-wrap .rust span.highlight{background:var(--scrape-example-code-line-highlight);}.scraped-example .example-wrap .rust span.highlight.focus{background:var(--scrape-example-code-line-highlight-focus);}.more-examples-toggle{max-width:calc(100% + 25px);margin-top:10px;margin-left:-25px;}.more-examples-toggle .hide-more{margin-left:25px;cursor:pointer;}.more-scraped-examples{margin-left:25px;position:relative;}.toggle-line{position:absolute;top:5px;bottom:0;right:calc(100% + 10px);padding:0 4px;cursor:pointer;}.toggle-line-inner{min-width:2px;height:100%;background:var(--scrape-example-toggle-line-background);}.toggle-line:hover .toggle-line-inner{background:var(--scrape-example-toggle-line-hover-background);}.more-scraped-examples .scraped-example,.example-links{margin-top:20px;}.more-scraped-examples .scraped-example:first-child{margin-top:5px;}.example-links ul{margin-bottom:0;} \ No newline at end of file diff --git a/doc/static.files/rustdoc-cb6f1f67f1bcd037.css b/doc/static.files/rustdoc-cb6f1f67f1bcd037.css new file mode 100644 index 00000000..ac787240 --- /dev/null +++ b/doc/static.files/rustdoc-cb6f1f67f1bcd037.css @@ -0,0 +1,8 @@ + :root{--nav-sub-mobile-padding:8px;--search-typename-width:6.75rem;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular-018c141bf0843ffd.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium-8f9a781e4970d388.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular-46f98efaafac5295.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2") format("woff2");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{box-sizing:border-box;}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;font-feature-settings:"kern","liga";background-color:var(--main-background-color);color:var(--main-color);}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:25px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}.docblock>h2:first-child,.docblock>h3:first-child,.docblock>h4:first-child,.docblock>h5:first-child,.docblock>h6:first-child{margin-top:0;}.main-heading h1{margin:0;padding:0;flex-grow:1;overflow-wrap:break-word;overflow-wrap:anywhere;}.main-heading{display:flex;flex-wrap:wrap;padding-bottom:6px;margin-bottom:15px;}.content h2,.top-doc .docblock>h3,.top-doc .docblock>h4{border-bottom:1px solid var(--headings-border-bottom-color);}h1,h2{line-height:1.25;padding-top:3px;padding-bottom:9px;}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;margin:0;padding:0;white-space:pre-wrap;}#crate-search,h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,.search-input,.search-results .result-name,.item-name>a,.out-of-band,span.since,a.src,#help-button>a,summary.hideme,.scraped-example-list,ul.all-items{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}#toggle-all-docs,a.anchor,.small-section-header a,#src-sidebar a,.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,h1 a,.search-results a,.stab,.result-name i{color:var(--main-color);}span.enum,a.enum,span.struct,a.struct,span.union,a.union,span.primitive,a.primitive,span.type,a.type,span.foreigntype,a.foreigntype{color:var(--type-link-color);}span.trait,a.trait,span.traitalias,a.traitalias{color:var(--trait-link-color);}span.associatedtype,a.associatedtype,span.constant,a.constant,span.static,a.static{color:var(--assoc-item-link-color);}span.fn,a.fn,span.method,a.method,span.tymethod,a.tymethod{color:var(--function-link-color);}span.attr,a.attr,span.derive,a.derive,span.macro,a.macro{color:var(--macro-link-color);}span.mod,a.mod{color:var(--mod-link-color);}span.keyword,a.keyword{color:var(--keyword-link-color);}a{color:var(--link-color);text-decoration:none;}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p{margin:0 0 .75em 0;}p:last-child{margin:0;}button{padding:1px 6px;cursor:pointer;}button#toggle-all-docs{padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.src main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}details:not(.toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;line-height:1.5;}pre.item-decl{overflow-x:auto;}.item-decl .type-contents-toggle{contain:initial;}.src .content pre{padding:20px;}.rustdoc.src .example-wrap pre.src-line-numbers{padding:20px 0 20px 4px;}img{max-width:100%;}.sub-logo-container,.logo-container{line-height:0;display:block;}.sub-logo-container{margin-right:32px;}.sub-logo-container>img{height:60px;width:60px;object-fit:contain;}.rust-logo{filter:var(--rust-logo-filter);}.sidebar{font-size:0.875rem;flex:0 0 200px;overflow-y:scroll;overscroll-behavior:contain;position:sticky;height:100vh;top:0;left:0;}.rustdoc.src .sidebar{flex-basis:50px;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;z-index:1;}.sidebar,.mobile-topbar,.sidebar-menu-toggle,#src-sidebar-toggle,#src-sidebar{background-color:var(--sidebar-background-color);}#src-sidebar-toggle>button:hover,#src-sidebar-toggle>button:focus{background-color:var(--sidebar-background-color-hover);}.src .sidebar>*:not(#src-sidebar-toggle){visibility:hidden;}.src-sidebar-expanded .src .sidebar{overflow-y:auto;flex-basis:300px;}.src-sidebar-expanded .src .sidebar>*:not(#src-sidebar-toggle){visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;scrollbar-color:var(--scrollbar-color);}.sidebar{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color);}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;background-color:var(--scrollbar-track-background-color);}.sidebar::-webkit-scrollbar-track{background-color:var(--scrollbar-track-background-color);}::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-background-color);}.hidden{display:none !important;}.sidebar .logo-container{margin-top:10px;margin-bottom:10px;text-align:center;}.version{overflow-wrap:break-word;}.logo-container>img{height:100px;width:100px;}ul.block,.block li{padding:0;margin:0;list-style:none;}.sidebar-elems a,.sidebar>h2 a{display:block;padding:0.25rem;margin-left:-0.25rem;}.sidebar h2{overflow-wrap:anywhere;padding:0;margin:0.7rem 0;}.sidebar h3{font-size:1.125rem;padding:0;margin:0;}.sidebar-elems,.sidebar>h2{padding-left:24px;}.sidebar a{color:var(--sidebar-link-color);}.sidebar .current,.sidebar a:hover:not(.logo-container){background-color:var(--sidebar-current-link-background-color);}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.mobile-topbar{display:none;}.rustdoc .example-wrap{display:flex;position:relative;margin-bottom:10px;}.rustdoc .example-wrap:last-child{margin-bottom:0px;}.rustdoc .example-wrap pre{margin:0;flex-grow:1;}.rustdoc:not(.src) .example-wrap pre{overflow:auto hidden;}.rustdoc .example-wrap pre.example-line-numbers,.rustdoc .example-wrap pre.src-line-numbers{flex-grow:0;min-width:fit-content;overflow:initial;text-align:right;-webkit-user-select:none;user-select:none;padding:14px 8px;color:var(--src-line-numbers-span-color);}.rustdoc .example-wrap pre.src-line-numbers{padding:14px 0;}.src-line-numbers a,.src-line-numbers span{color:var(--src-line-numbers-span-color);padding:0 8px;}.src-line-numbers :target{background-color:transparent;border-right:none;padding:0 8px;}.src-line-numbers .line-highlighted{background-color:var(--src-line-number-highlighted-background-color);}.search-loading{text-align:center;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock :not(pre)>code,.docblock-short code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.more-examples-toggle):not(.example-wrap){max-width:100%;overflow-x:auto;}.out-of-band{flex-grow:0;font-size:1.125rem;}.docblock code,.docblock-short code,pre,.rustdoc.src .example-wrap{background-color:var(--code-block-background-color);}#main-content{position:relative;}.docblock table{margin:.5em 0;border-collapse:collapse;}.docblock table td,.docblock table th{padding:.5em;border:1px solid var(--border-color);}.docblock table tbody tr:nth-child(2n){background:var(--table-alt-row-background-color);}.method .where,.fn .where,.where.fmt-newline{display:block;white-space:pre-wrap;font-size:0.875rem;}.item-info{display:block;margin-left:24px;}.item-info code{font-size:0.875rem;}#main-content>.item-info{margin-left:0;}nav.sub{flex-grow:1;flex-flow:row nowrap;margin:4px 0 25px 0;display:flex;align-items:center;}.search-form{position:relative;display:flex;height:34px;flex-grow:1;}.src nav.sub{margin:0 0 15px 0;}.small-section-header{display:block;position:relative;}.small-section-header:hover>.anchor,.impl:hover>.anchor,.trait-impl:hover>.anchor,.variant:hover>.anchor{display:initial;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-15px;padding-right:8px;}h2.small-section-header>.anchor{padding-right:6px;}.main-heading a:hover,.example-wrap .rust a:hover,.all-items a:hover,.docblock a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover,.docblock-short a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover,.item-info a{text-decoration:underline;}.crate.block a.current{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;padding:0;margin:0;}.item-table>li{display:table-row;}.item-table>li>div{display:table-cell;}.item-table>li>.item-name{padding-right:1.25rem;}.search-results-title{margin-top:0;white-space:nowrap;display:flex;align-items:baseline;}#crate-search-div{position:relative;min-width:5em;}#crate-search{min-width:115px;padding:0 23px 0 4px;max-width:100%;text-overflow:ellipsis;border:1px solid var(--border-color);border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;background-color:var(--main-background-color);color:inherit;line-height:1.5;font-weight:500;}#crate-search:hover,#crate-search:focus{border-color:var(--crate-search-hover-border);}#crate-search-div::after{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;content:"";background-repeat:no-repeat;background-size:20px;background-position:calc(100% - 2px) 56%;background-image:url('data:image/svg+xml, \ + ');filter:var(--crate-search-div-filter);}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:var(--crate-search-div-hover-filter);}#crate-search>option{font-size:1rem;}.search-input{-webkit-appearance:none;outline:none;border:1px solid var(--border-color);border-radius:2px;padding:8px;font-size:1rem;flex-grow:1;background-color:var(--button-background-color);color:var(--search-color);}.search-input:focus{border-color:var(--search-input-focused-border-color);}.search-results{display:none;}.search-results.active{display:block;}.search-results>a{display:flex;margin-left:2px;margin-right:2px;border-bottom:1px solid var(--search-result-border-color);gap:1em;}.search-results>a>div.desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex:2;}.search-results a:hover,.search-results a:focus{background-color:var(--search-result-link-focus-background-color);}.search-results .result-name{display:flex;align-items:center;justify-content:start;flex:3;}.search-results .result-name .alias{color:var(--search-results-alias-color);}.search-results .result-name .grey{color:var(--search-results-grey-color);}.search-results .result-name .typename{color:var(--search-results-grey-color);font-size:0.875rem;width:var(--search-typename-width);}.search-results .result-name .path{word-break:break-all;max-width:calc(100% - var(--search-typename-width));display:inline-block;}.search-results .result-name .path>*{display:inline;}.popover{position:absolute;top:100%;right:0;z-index:2;margin-top:7px;border-radius:3px;border:1px solid var(--border-color);background-color:var(--main-background-color);color:var(--main-color);--popover-arrow-offset:11px;}.popover::before{content:'';position:absolute;right:var(--popover-arrow-offset);border:solid var(--border-color);border-width:1px 1px 0 0;background-color:var(--main-background-color);padding:4px;transform:rotate(-45deg);top:-5px;}#help.popover{max-width:600px;--popover-arrow-offset:48px;}#help dt{float:left;clear:left;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{margin:10px 0;border-bottom:1px solid var(--border-color);padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid var(--border-color);}.side-by-side>div{width:50%;float:left;padding:0 20px 20px 17px;}.item-info .stab{min-height:36px;display:flex;padding:3px;margin-bottom:5px;align-items:center;vertical-align:text-bottom;}.item-name .stab{margin-left:0.3125em;}.stab{padding:0 2px;font-size:0.875rem;font-weight:normal;color:var(--main-color);background-color:var(--stab-background-color);width:fit-content;white-space:pre-wrap;border-radius:3px;display:inline;}.stab.portability>code{background:none;color:var(--stab-code-color);}.stab .emoji{font-size:1.25rem;margin-right:0.3rem;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;float:right;}.rightside:not(a),.out-of-band{color:var(--right-side-color);}pre.rust{tab-size:4;-moz-tab-size:4;}pre.rust .kw{color:var(--code-highlight-kw-color);}pre.rust .kw-2{color:var(--code-highlight-kw-2-color);}pre.rust .lifetime{color:var(--code-highlight-lifetime-color);}pre.rust .prelude-ty{color:var(--code-highlight-prelude-color);}pre.rust .prelude-val{color:var(--code-highlight-prelude-val-color);}pre.rust .string{color:var(--code-highlight-string-color);}pre.rust .number{color:var(--code-highlight-number-color);}pre.rust .bool-val{color:var(--code-highlight-literal-color);}pre.rust .self{color:var(--code-highlight-self-color);}pre.rust .attr{color:var(--code-highlight-attribute-color);}pre.rust .macro,pre.rust .macro-nonterminal{color:var(--code-highlight-macro-color);}pre.rust .question-mark{font-weight:bold;color:var(--code-highlight-question-mark-color);}pre.rust .comment{color:var(--code-highlight-comment-color);}pre.rust .doccomment{color:var(--code-highlight-doc-comment-color);}.rustdoc.src .example-wrap pre.rust a{background:var(--codeblock-link-background);}.example-wrap.compile_fail,.example-wrap.should_panic{border-left:2px solid var(--codeblock-error-color);}.ignore.example-wrap{border-left:2px solid var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover,.example-wrap.should_panic:hover{border-left:2px solid var(--codeblock-error-hover-color);}.example-wrap.ignore:hover{border-left:2px solid var(--codeblock-ignore-hover-color);}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip{color:var(--codeblock-error-color);}.example-wrap.ignore .tooltip{color:var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover .tooltip,.example-wrap.should_panic:hover .tooltip{color:var(--codeblock-error-hover-color);}.example-wrap.ignore:hover .tooltip{color:var(--codeblock-ignore-hover-color);}.example-wrap .tooltip{position:absolute;display:block;left:-25px;top:5px;margin:0;line-height:1;}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip,.example-wrap.ignore .tooltip{font-weight:bold;font-size:1.25rem;}a.test-arrow{visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.375rem;top:5px;right:5px;z-index:1;color:var(--test-arrow-color);background-color:var(--test-arrow-background-color);}a.test-arrow:hover{color:var(--test-arrow-hover-color);background-color:var(--test-arrow-hover-background-color);}.example-wrap:hover .test-arrow{visibility:visible;}.code-attribute{font-weight:300;color:var(--code-attribute-color);}.item-spacer{width:100%;height:12px;display:block;}.out-of-band>span.since{font-size:1.25rem;}.sub-variant h4{font-size:1rem;font-weight:400;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}:target{padding-right:3px;background-color:var(--target-background-color);border-right:3px solid var(--target-border-color);}.code-header a.tooltip{color:inherit;margin-right:15px;position:relative;}.code-header a.tooltip:hover{color:var(--link-color);}a.tooltip:hover::after{position:absolute;top:calc(100% - 10px);left:-15px;right:-15px;height:20px;content:"\00a0";}.fade-out{opacity:0;transition:opacity 0.45s cubic-bezier(0,0,0.1,1.0);}.popover.tooltip .content{margin:0.25em 0.5em;}.popover.tooltip .content pre,.popover.tooltip .content code{background:transparent;margin:0;padding:0;font-size:1.25rem;white-space:pre-wrap;}.popover.tooltip .content>h3:first-child{margin:0 0 5px 0;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#search-tabs{display:flex;flex-direction:row;gap:1px;margin-bottom:4px;}#search-tabs button{text-align:center;font-size:1.125rem;border:0;border-top:2px solid;flex:1;line-height:1.5;color:inherit;}#search-tabs button:not(.selected){background-color:var(--search-tab-button-not-selected-background);border-top-color:var(--search-tab-button-not-selected-border-top-color);}#search-tabs button:hover,#search-tabs button.selected{background-color:var(--search-tab-button-selected-background);border-top-color:var(--search-tab-button-selected-border-top-color);}#search-tabs .count{font-size:1rem;color:var(--search-tab-title-count-color);}#search .error code{border-radius:3px;background-color:var(--search-error-code-background-color);}.search-corrections{font-weight:normal;}#src-sidebar-toggle{position:sticky;top:0;left:0;font-size:1.25rem;border-bottom:1px solid;display:flex;height:40px;justify-content:stretch;align-items:stretch;z-index:10;}#src-sidebar{width:100%;overflow:auto;}#src-sidebar>.title{font-size:1.5rem;text-align:center;border-bottom:1px solid var(--border-color);margin-bottom:6px;}#src-sidebar div.files>a:hover,details.dir-entry summary:hover,#src-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:var(--src-sidebar-background-hover);}#src-sidebar div.files>a.selected{background-color:var(--src-sidebar-background-selected);}#src-sidebar-toggle>button{font-size:inherit;font-weight:bold;background:none;color:inherit;text-align:center;border:none;outline:none;flex:1 1;-webkit-appearance:none;opacity:1;}#settings-menu,#help-button{margin-left:4px;display:flex;}#settings-menu>a,#help-button>a{display:flex;align-items:center;justify-content:center;background-color:var(--button-background-color);border:1px solid var(--border-color);border-radius:2px;color:var(--settings-button-color);font-size:20px;width:33px;}#settings-menu>a:hover,#settings-menu>a:focus,#help-button>a:hover,#help-button>a:focus{border-color:var(--settings-button-border-focus);}#copy-path{color:var(--copy-path-button-color);background:var(--main-background-color);height:34px;margin-left:10px;padding:0;padding-left:2px;border:0;width:33px;}#copy-path>img{filter:var(--copy-path-img-filter);}#copy-path:hover>img{filter:var(--copy-path-img-hover-filter);}@keyframes rotating{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}#settings-menu.rotate>a img{animation:rotating 2s linear infinite;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px var(--border-color);border-radius:3px;color:var(--kbd-color);background-color:var(--kbd-background);box-shadow:inset 0 -1px 0 var(--kbd-box-shadow-color);}ul.all-items>li{list-style:none;}details.dir-entry{padding-left:4px;}details.dir-entry>summary{margin:0 0 0 -4px;padding:0 0 0 4px;cursor:pointer;}details.dir-entry div.folders,details.dir-entry div.files{padding-left:23px;}details.dir-entry a{display:block;}details.toggle{contain:layout;position:relative;}details.toggle>summary.hideme{cursor:pointer;font-size:1rem;}details.toggle>summary{list-style:none;outline:none;}details.toggle>summary::-webkit-details-marker,details.toggle>summary::marker{display:none;}details.toggle>summary.hideme>span{margin-left:9px;}details.toggle>summary::before{background:url('data:image/svg+xml,') no-repeat top left;content:"";cursor:pointer;width:16px;height:16px;display:inline-block;vertical-align:middle;opacity:.5;filter:var(--toggle-filter);}details.toggle>summary.hideme>span,.more-examples-toggle summary,.more-examples-toggle .hide-more{color:var(--toggles-color);}details.toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.toggle>summary.hideme::after{content:"";}details.toggle>summary:focus::before,details.toggle>summary:hover::before{opacity:1;}details.toggle>summary:focus-visible::before{outline:1px dotted #000;outline-offset:1px;}details.non-exhaustive{margin-bottom:8px;}details.toggle>summary.hideme::before{position:relative;}details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.toggle[open] >summary.hideme{position:absolute;}details.toggle[open] >summary.hideme>span{display:none;}details.toggle[open] >summary::before{background:url('data:image/svg+xml,') no-repeat top left;}details.toggle[open] >summary::after{content:"Collapse";}.docblock summary>*{display:inline-block;}.docblock>.example-wrap:first-child .tooltip{margin-top:16px;}@media (max-width:700px){*[id]{scroll-margin-top:45px;}.rustdoc{display:block;}main{padding-left:15px;padding-top:0px;}.main-heading{flex-direction:column;}.out-of-band{text-align:left;margin-left:initial;padding:initial;}.out-of-band .since::before{content:"Since ";}.sidebar .logo-container,.sidebar .location{display:none;}.sidebar{position:fixed;top:45px;left:-1000px;z-index:11;height:calc(100vh - 45px);width:200px;}.src main,.rustdoc.src .sidebar{top:0;padding:0;height:100vh;border:0;}.sidebar.shown,.src-sidebar-expanded .src .sidebar,.rustdoc:not(.src) .sidebar:focus-within{left:0;}.mobile-topbar h2{padding-bottom:0;margin:auto 0.5em auto auto;overflow:hidden;font-size:24px;}.mobile-topbar h2 a{display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin:5px 0 5px 20px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.sidebar-menu-toggle{width:45px;font-size:32px;border:none;color:var(--main-color);}.sidebar-elems{margin-top:1em;}.anchor{display:none !important;}#search-tabs .count{display:block;}#main-content>details.toggle>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}#src-sidebar-toggle{position:fixed;left:1px;top:100px;width:30px;font-size:1.5rem;padding:0;z-index:10;border-top-right-radius:3px;border-bottom-right-radius:3px;border:1px solid;border-left:0;}.src-sidebar-expanded #src-sidebar-toggle{left:unset;top:unset;width:unset;border-top-right-radius:unset;border-bottom-right-radius:unset;position:sticky;border:0;border-bottom:1px solid;}#copy-path,#help-button{display:none;}.item-table,.item-row,.item-table>li,.item-table>li>div,.search-results>a,.search-results>a>div{display:block;}.search-results>a{padding:5px 0px;}.search-results>a>div.desc,.item-table>li>div.desc{padding-left:2em;}.search-results .result-name{display:block;}.search-results .result-name .typename{width:initial;margin-right:0;}.search-results .result-name .typename,.search-results .result-name .path{display:inline;}.src-sidebar-expanded .src .sidebar{max-width:100vw;width:100vw;}details.toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.toggle>summary:not(.hideme)::before,#main-content>details.toggle:not(.top-doc)>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}.impl-items>.item-info{margin-left:34px;}.src nav.sub{margin:0;padding:var(--nav-sub-mobile-padding);}}@media (min-width:701px){.scraped-example-title{position:absolute;z-index:10;background:var(--main-background-color);bottom:8px;right:5px;padding:2px 4px;box-shadow:0 0 4px var(--main-background-color);}}@media print{nav.sidebar,nav.sub,.out-of-band,a.src,#copy-path,details.toggle[open] >summary::before,details.toggle>summary::before,details.toggle.top-doc>summary{display:none;}.docblock{margin-left:0;}main{padding:10px;}}@media (max-width:464px){.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}nav.sub{flex-direction:column;}.search-form{align-self:stretch;}.sub-logo-container>img{height:35px;width:35px;margin-bottom:var(--nav-sub-mobile-padding);}}.variant,.implementors-toggle>summary,.impl,#implementors-list>.docblock,.impl-items>section,.impl-items>.toggle>summary,.methods>section,.methods>.toggle>summary{margin-bottom:0.75em;}.variants>.docblock,.implementors-toggle>.docblock,.impl-items>.toggle[open]:not(:last-child),.methods>.toggle[open]:not(:last-child),.implementors-toggle[open]:not(:last-child){margin-bottom:2em;}#trait-implementations-list .impl-items>.toggle:not(:last-child),#synthetic-implementations-list .impl-items>.toggle:not(:last-child),#blanket-implementations-list .impl-items>.toggle:not(:last-child){margin-bottom:1em;}.scraped-example-list .scrape-help{margin-left:10px;padding:0 4px;font-weight:normal;font-size:12px;position:relative;bottom:1px;border:1px solid var(--scrape-example-help-border-color);border-radius:50px;color:var(--scrape-example-help-color);}.scraped-example-list .scrape-help:hover{border-color:var(--scrape-example-help-hover-border-color);color:var(--scrape-example-help-hover-color);}.scraped-example{position:relative;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper{max-height:calc(1.5em * 5 + 10px);}.scraped-example:not(.expanded) .code-wrapper pre{overflow-y:hidden;padding-bottom:0;max-height:calc(1.5em * 5 + 10px);}.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper,.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper pre{max-height:calc(1.5em * 10 + 10px);}.scraped-example .code-wrapper .next,.scraped-example .code-wrapper .prev,.scraped-example .code-wrapper .expand{color:var(--main-color);position:absolute;top:0.25em;z-index:1;padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.scraped-example .code-wrapper .prev{right:2.25em;}.scraped-example .code-wrapper .next{right:1.25em;}.scraped-example .code-wrapper .expand{right:0.25em;}.scraped-example:not(.expanded) .code-wrapper::before,.scraped-example:not(.expanded) .code-wrapper::after{content:" ";width:100%;height:5px;position:absolute;z-index:1;}.scraped-example:not(.expanded) .code-wrapper::before{top:0;background:linear-gradient(to bottom,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example:not(.expanded) .code-wrapper::after{bottom:0;background:linear-gradient(to top,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example .code-wrapper .example-wrap{width:100%;overflow-y:hidden;margin-bottom:0;}.scraped-example:not(.expanded) .code-wrapper .example-wrap{overflow-x:hidden;}.scraped-example .example-wrap .rust span.highlight{background:var(--scrape-example-code-line-highlight);}.scraped-example .example-wrap .rust span.highlight.focus{background:var(--scrape-example-code-line-highlight-focus);}.more-examples-toggle{max-width:calc(100% + 25px);margin-top:10px;margin-left:-25px;}.more-examples-toggle .hide-more{margin-left:25px;cursor:pointer;}.more-scraped-examples{margin-left:25px;position:relative;}.toggle-line{position:absolute;top:5px;bottom:0;right:calc(100% + 10px);padding:0 4px;cursor:pointer;}.toggle-line-inner{min-width:2px;height:100%;background:var(--scrape-example-toggle-line-background);}.toggle-line:hover .toggle-line-inner{background:var(--scrape-example-toggle-line-hover-background);}.more-scraped-examples .scraped-example,.example-links{margin-top:20px;}.more-scraped-examples .scraped-example:first-child{margin-top:5px;}.example-links ul{margin-bottom:0;} \ No newline at end of file diff --git a/doc/static.files/search-6dfdfced5eff6596.js b/doc/static.files/search-6dfdfced5eff6596.js new file mode 100644 index 00000000..90d0eb75 --- /dev/null +++ b/doc/static.files/search-6dfdfced5eff6596.js @@ -0,0 +1,5 @@ +"use strict";(function(){const itemTypes=["mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","primitive","associatedtype","constant","associatedconstant","union","foreigntype","keyword","existential","attr","derive","traitalias",];const longItemTypes=["module","extern crate","re-export","struct","enum","function","type alias","static","trait","","trait method","method","struct field","enum variant","macro","primitive type","assoc type","constant","assoc const","union","foreign type","keyword","existential type","attribute macro","derive macro","trait alias",];const TY_PRIMITIVE=itemTypes.indexOf("primitive");const TY_KEYWORD=itemTypes.indexOf("keyword");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";function hasOwnPropertyRustdoc(obj,property){return Object.prototype.hasOwnProperty.call(obj,property)}function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("search-tabs").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});const isTypeSearch=(nb>0||iter===1);iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb;const correctionsElem=document.getElementsByClassName("search-corrections");if(isTypeSearch){removeClass(correctionsElem[0],"hidden")}else{addClass(correctionsElem[0],"hidden")}}else if(nb!==0){printTab(0)}}const editDistanceState={current:[],prev:[],prevPrev:[],calculate:function calculate(a,b,limit){if(a.lengthlimit){return limit+1}while(b.length>0&&b[0]===a[0]){a=a.substring(1);b=b.substring(1)}while(b.length>0&&b[b.length-1]===a[a.length-1]){a=a.substring(0,a.length-1);b=b.substring(0,b.length-1)}if(b.length===0){return minDist}const aLength=a.length;const bLength=b.length;for(let i=0;i<=bLength;++i){this.current[i]=0;this.prev[i]=i;this.prevPrev[i]=Number.MAX_VALUE}for(let i=1;i<=aLength;++i){this.current[0]=i;const aIdx=i-1;for(let j=1;j<=bLength;++j){const bIdx=j-1;const substitutionCost=a[aIdx]===b[bIdx]?0:1;this.current[j]=Math.min(this.prev[j]+1,this.current[j-1]+1,this.prev[j-1]+substitutionCost);if((i>1)&&(j>1)&&(a[aIdx]===b[bIdx-1])&&(a[aIdx-1]===b[bIdx])){this.current[j]=Math.min(this.current[j],this.prevPrev[j-2]+1)}}const prevPrevTmp=this.prevPrev;this.prevPrev=this.prev;this.prev=this.current;this.current=prevPrevTmp}const distance=this.prev[bLength];return distance<=limit?distance:(limit+1)},};function editDistance(a,b,limit){return editDistanceState.calculate(a,b,limit)}function initSearch(rawSearchIndex){const MAX_RESULTS=200;const NO_TYPE_FILTER=-1;let searchIndex;let currentResults;let typeNameIdMap;const ALIASES=new Map();let typeNameIdOfArray;let typeNameIdOfSlice;let typeNameIdOfArrayOrSlice;function buildTypeMapIndex(name){if(name===""||name===null){return-1}if(typeNameIdMap.has(name)){return typeNameIdMap.get(name)}else{const id=typeNameIdMap.size;typeNameIdMap.set(name,id);return id}}function isWhitespace(c){return" \t\n\r".indexOf(c)!==-1}function isSpecialStartCharacter(c){return"<\"".indexOf(c)!==-1}function isEndCharacter(c){return",>-]".indexOf(c)!==-1}function isStopCharacter(c){return isEndCharacter(c)}function isErrorCharacter(c){return"()".indexOf(c)!==-1}function itemTypeFromName(typename){const index=itemTypes.findIndex(i=>i===typename);if(index<0){throw["Unknown type filter ",typename]}return index}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw["Unexpected ","\""," in generics"]}else if(query.literalSearch){throw["Cannot have more than one literal search element"]}else if(parserState.totalElems-parserState.genericsElems>0){throw["Cannot use literal search when there is more than one element"]}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw["Unclosed ","\""]}else if(parserState.userQuery[end]!=="\""){throw["Unexpected ",parserState.userQuery[end]," in a string element"]}else if(start===end){throw["Cannot have empty string element"]}parserState.pos+=1;query.literalSearch=true}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function isIdentCharacter(c){return(c==="_"||(c>="0"&&c<="9")||(c>="a"&&c<="z")||(c>="A"&&c<="Z"))}function isSeparatorCharacter(c){return c===","}function isPathSeparator(c){return c===":"||isWhitespace(c)}function prevIs(parserState,lookingFor){let pos=parserState.pos;while(pos>0){const c=parserState.userQuery[pos-1];if(c===lookingFor){return true}else if(!isWhitespace(c)){break}pos-=1}return false}function isLastElemGeneric(elems,parserState){return(elems.length>0&&elems[elems.length-1].generics.length>0)||prevIs(parserState,">")}function skipWhitespace(parserState){while(parserState.pos0){throw["Cannot have more than one element if you use quotes"]}const typeFilter=parserState.typeFilter;parserState.typeFilter=null;if(name==="!"){if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive never type ","!"," and ",typeFilter," both specified",]}if(generics.length!==0){throw["Never type ","!"," does not accept generic parameters",]}return{name:"never",id:-1,fullPath:["never"],pathWithoutLast:[],pathLast:"never",generics:[],typeFilter:"primitive",}}if(path.startsWith("::")){throw["Paths cannot start with ","::"]}else if(path.endsWith("::")){throw["Paths cannot end with ","::"]}else if(path.includes("::::")){throw["Unexpected ","::::"]}else if(path.includes(" ::")){throw["Unexpected "," ::"]}else if(path.includes(":: ")){throw["Unexpected ",":: "]}const pathSegments=path.split(/::|\s+/);if(pathSegments.length===0||(pathSegments.length===1&&pathSegments[0]==="")){if(generics.length>0||prevIs(parserState,">")){throw["Found generics without a path"]}else{throw["Unexpected ",parserState.userQuery[parserState.pos]]}}for(const[i,pathSegment]of pathSegments.entries()){if(pathSegment==="!"){if(i!==0){throw["Never type ","!"," is not associated item"]}pathSegments[i]="never"}}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}return{name:name.trim(),id:-1,fullPath:pathSegments,pathWithoutLast:pathSegments.slice(0,pathSegments.length-1),pathLast:pathSegments[pathSegments.length-1],generics:generics,typeFilter,}}function getIdentEndPosition(parserState){const start=parserState.pos;let end=parserState.pos;let foundExclamation=-1;while(parserState.pos=end){throw["Found generics without a path"]}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}if(isStringElem){skipWhitespace(parserState)}if(start>=end&&generics.length===0){return}elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics))}}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;let start=parserState.pos;const oldTypeFilter=parserState.typeFilter;parserState.typeFilter=null;let extra="";if(endChar===">"){extra="<"}else if(endChar==="]"){extra="["}else if(endChar===""){extra="->"}else{extra=endChar}while(parserState.pos"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(endChar!==""){throw["Expected ",","," or ",endChar,...extra,", found ",c,]}throw["Expected ",",",...extra,", found ",c,]}const posBefore=parserState.pos;start=parserState.pos;getNextElem(query,parserState,elems,endChar!=="");if(endChar!==""&&parserState.pos>=parserState.length){throw["Unclosed ",extra]}if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}if(parserState.pos>=parserState.length&&endChar!==""){throw["Unclosed ",extra]}parserState.pos+=1;parserState.typeFilter=oldTypeFilter}function checkExtraTypeFilterCharacters(start,parserState){const query=parserState.userQuery.slice(start,parserState.pos).trim();for(const c in query){if(!isIdentCharacter(query[c])){throw["Unexpected ",query[c]," in type filter (before ",":",")",]}}}function parseInput(query,parserState){let foundStopChar=true;let start=parserState.pos;while(parserState.pos"){if(isReturnArrow(parserState)){break}throw["Unexpected ",c," (did you mean ","->","?)"]}throw["Unexpected ",c]}else if(c===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}else if(query.elems.length===0){throw["Expected type filter before ",":"]}else if(query.literalSearch){throw["Cannot use quotes on type filter"]}const typeFilterElem=query.elems.pop();checkExtraTypeFilterCharacters(start,parserState);parserState.typeFilter=typeFilterElem.name;parserState.pos+=1;parserState.totalElems-=1;query.literalSearch=false;foundStopChar=true;continue}else if(isWhitespace(c)){skipWhitespace(parserState);continue}if(!foundStopChar){let extra="";if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(parserState.typeFilter!==null){throw["Expected ",","," or ","->",...extra,", found ",c,]}throw["Expected ",",",", ",":"," or ","->",...extra,", found ",c,]}const before=query.elems.length;start=parserState.pos;getNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}while(parserState.pos"]}break}else{parserState.pos+=1}}}function newParsedQuery(userQuery){return{original:userQuery,userQuery:userQuery.toLowerCase(),elems:[],returned:[],foundElems:0,literalSearch:false,error:null,correction:null,}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&hasOwnPropertyRustdoc(rawSearchIndex,elem.value)){return elem.value}return null}function parseQuery(userQuery){function convertTypeFilterOnElem(elem){if(elem.typeFilter!==null){let typeFilter=elem.typeFilter;if(typeFilter==="const"){typeFilter="constant"}elem.typeFilter=itemTypeFromName(typeFilter)}else{elem.typeFilter=NO_TYPE_FILTER}for(const elem2 of elem.generics){convertTypeFilterOnElem(elem2)}}userQuery=userQuery.trim();const parserState={length:userQuery.length,pos:0,totalElems:0,genericsElems:0,typeFilter:null,userQuery:userQuery.toLowerCase(),};let query=newParsedQuery(userQuery);try{parseInput(query,parserState);for(const elem of query.elems){convertTypeFilterOnElem(elem)}for(const elem of query.returned){convertTypeFilterOnElem(elem)}}catch(err){query=newParsedQuery(userQuery);query.error=err;return query}if(!query.literalSearch){query.literalSearch=parserState.totalElems>1}query.foundElems=query.elems.length+query.returned.length;return query}function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}function execQuery(parsedQuery,searchWords,filterCrates,currentCrate){const results_others=new Map(),results_in_args=new Map(),results_returned=new Map();function transformResults(results){const duplicates=new Set();const out=[];for(const result of results){if(result.id>-1){const obj=searchIndex[result.id];obj.dist=result.dist;const res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;if(duplicates.has(obj.fullPath)){continue}duplicates.add(obj.fullPath);obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType,preferredCrate){if(results.size===0){return[]}const userQuery=parsedQuery.userQuery;const result_list=[];for(const result of results.values()){result.word=searchWords[result.id];result.item=searchIndex[result.id]||{};result_list.push(result)}result_list.sort((aaa,bbb)=>{let a,b;a=(aaa.word!==userQuery);b=(bbb.word!==userQuery);if(a!==b){return a-b}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.path_dist;b=bbb.path_dist;if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}a=(aaa.dist);b=(bbb.dist);if(a!==b){return a-b}a=aaa.item.deprecated;b=bbb.item.deprecated;if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}if((aaa.item.ty===TY_PRIMITIVE&&bbb.item.ty!==TY_KEYWORD)||(aaa.item.ty===TY_KEYWORD&&bbb.item.ty!==TY_PRIMITIVE)){return-1}if((bbb.item.ty===TY_PRIMITIVE&&aaa.item.ty!==TY_PRIMITIVE)||(bbb.item.ty===TY_KEYWORD&&aaa.item.ty!==TY_KEYWORD)){return 1}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});let nameSplit=null;if(parsedQuery.elems.length===1){const hasPath=typeof parsedQuery.elems[0].path==="undefined";nameSplit=hasPath?null:parsedQuery.elems[0].path}for(const result of result_list){if(result.dontValidate){continue}const name=result.item.name.toLowerCase(),path=result.item.path.toLowerCase(),parent=result.item.parent;if(!isType&&!validateResult(name,path,nameSplit,parent)){result.id=-1}}return transformResults(result_list)}function checkGenerics(fnType,queryElem){return unifyFunctionTypes(fnType.generics,queryElem.generics)}function unifyFunctionTypes(fnTypes,queryElems){if(queryElems.length===0){return true}if(!fnTypes||fnTypes.length===0){return false}const queryElemSet=new Map();const addQueryElemToQueryElemSet=function addQueryElemToQueryElemSet(queryElem){let currentQueryElemList;if(queryElemSet.has(queryElem.id)){currentQueryElemList=queryElemSet.get(queryElem.id)}else{currentQueryElemList=[];queryElemSet.set(queryElem.id,currentQueryElemList)}currentQueryElemList.push(queryElem)};for(const queryElem of queryElems){addQueryElemToQueryElemSet(queryElem)}const fnTypeSet=new Map();const addFnTypeToFnTypeSet=function addFnTypeToFnTypeSet(fnType){const queryContainsArrayOrSliceElem=queryElemSet.has(typeNameIdOfArrayOrSlice);if(fnType.id===-1||!(queryElemSet.has(fnType.id)||(fnType.id===typeNameIdOfSlice&&queryContainsArrayOrSliceElem)||(fnType.id===typeNameIdOfArray&&queryContainsArrayOrSliceElem))){for(const innerFnType of fnType.generics){addFnTypeToFnTypeSet(innerFnType)}return}let currentQueryElemList=queryElemSet.get(fnType.id)||[];let matchIdx=currentQueryElemList.findIndex(queryElem=>{return typePassesFilter(queryElem.typeFilter,fnType.ty)&&checkGenerics(fnType,queryElem)});if(matchIdx===-1&&(fnType.id===typeNameIdOfSlice||fnType.id===typeNameIdOfArray)&&queryContainsArrayOrSliceElem){currentQueryElemList=queryElemSet.get(typeNameIdOfArrayOrSlice)||[];matchIdx=currentQueryElemList.findIndex(queryElem=>{return typePassesFilter(queryElem.typeFilter,fnType.ty)&&checkGenerics(fnType,queryElem)})}if(matchIdx===-1){for(const innerFnType of fnType.generics){addFnTypeToFnTypeSet(innerFnType)}return}let currentFnTypeList;if(fnTypeSet.has(fnType.id)){currentFnTypeList=fnTypeSet.get(fnType.id)}else{currentFnTypeList=[];fnTypeSet.set(fnType.id,currentFnTypeList)}currentFnTypeList.push(fnType)};for(const fnType of fnTypes){addFnTypeToFnTypeSet(fnType)}const doHandleQueryElemList=(currentFnTypeList,queryElemList)=>{if(queryElemList.length===0){return true}const queryElem=queryElemList.pop();const l=currentFnTypeList.length;for(let i=0;i{if(!fnTypeSet.has(id)){if(id===typeNameIdOfArrayOrSlice){return handleQueryElemList(typeNameIdOfSlice,queryElemList)||handleQueryElemList(typeNameIdOfArray,queryElemList)}return false}const currentFnTypeList=fnTypeSet.get(id);if(currentFnTypeList.length0?checkIfInList(row.generics,elem):false}const matchesExact=row.id===elem.id;const matchesArrayOrSlice=elem.id===typeNameIdOfArrayOrSlice&&(row.id===typeNameIdOfSlice||row.id===typeNameIdOfArray);if((matchesExact||matchesArrayOrSlice)&&typePassesFilter(elem.typeFilter,row.ty)){if(elem.generics.length>0){return checkGenerics(row,elem)}return true}return checkIfInList(row.generics,elem)}function checkPath(contains,ty,maxEditDistance){if(contains.length===0){return 0}let ret_dist=maxEditDistance+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;if(clength>length){return maxEditDistance+1}for(let i=0;ilength){break}let dist_total=0;let aborted=false;for(let x=0;xmaxEditDistance){aborted=true;break}dist_total+=dist}if(!aborted){ret_dist=Math.min(ret_dist,Math.round(dist_total/clength))}}return ret_dist}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,deprecated:item.deprecated,}}function handleAliases(ret,query,filterCrates,currentCrate){const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(ALIASES.has(filterCrates)&&ALIASES.get(filterCrates).has(lowerQuery)){const query_aliases=ALIASES.get(filterCrates).get(lowerQuery);for(const alias of query_aliases){aliases.push(createAliasFromItem(searchIndex[alias]))}}}else{for(const[crate,crateAliasesIndex]of ALIASES){if(crateAliasesIndex.has(lowerQuery)){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=crateAliasesIndex.get(lowerQuery);for(const alias of query_aliases){pushTo.push(createAliasFromItem(searchIndex[alias]))}}}}const sortFunc=(aaa,bbb)=>{if(aaa.path{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach(pushFunc);crateAliases.forEach(pushFunc)}function addIntoResults(results,fullId,id,index,dist,path_dist,maxEditDistance){const inBounds=dist<=maxEditDistance||index!==-1;if(dist===0||(!parsedQuery.literalSearch&&inBounds)){if(results.has(fullId)){const result=results.get(fullId);if(result.dontValidate||result.dist<=dist){return}}results.set(fullId,{id:id,index:index,dontValidate:parsedQuery.literalSearch,dist:dist,path_dist:path_dist,})}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned,maxEditDistance){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let index=-1,path_dist=0;const fullId=row.id;const searchWord=searchWords[pos];const in_args=row.type&&row.type.inputs&&checkIfInList(row.type.inputs,elem);if(in_args){addIntoResults(results_in_args,fullId,pos,-1,0,0,maxEditDistance)}const returned=row.type&&row.type.output&&checkIfInList(row.type.output,elem);if(returned){addIntoResults(results_returned,fullId,pos,-1,0,0,maxEditDistance)}if(!typePassesFilter(elem.typeFilter,row.ty)){return}const row_index=row.normalizedName.indexOf(elem.pathLast);const word_index=searchWord.indexOf(elem.pathLast);if(row_index===-1){index=word_index}else if(word_index===-1){index=row_index}else if(word_index1){path_dist=checkPath(elem.pathWithoutLast,row,maxEditDistance);if(path_dist>maxEditDistance){return}}if(parsedQuery.literalSearch){if(searchWord===elem.name){addIntoResults(results_others,fullId,pos,index,0,path_dist)}return}const dist=editDistance(searchWord,elem.pathLast,maxEditDistance);if(index===-1&&dist+path_dist>maxEditDistance){return}addIntoResults(results_others,fullId,pos,index,dist,path_dist,maxEditDistance)}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)||!row.type){return}if(!unifyFunctionTypes(row.type.inputs,parsedQuery.elems)){return}if(!unifyFunctionTypes(row.type.output,parsedQuery.returned)){return}addIntoResults(results,row.id,pos,0,0,0,Number.MAX_VALUE)}function innerRunQuery(){let elem,i,nSearchWords,in_returned,row;let queryLen=0;for(const elem of parsedQuery.elems){queryLen+=elem.name.length}for(const elem of parsedQuery.returned){queryLen+=elem.name.length}const maxEditDistance=Math.floor(queryLen/3);function convertNameToId(elem){if(typeNameIdMap.has(elem.name)){elem.id=typeNameIdMap.get(elem.name)}else if(!parsedQuery.literalSearch){let match=-1;let matchDist=maxEditDistance+1;let matchName="";for(const[name,id]of typeNameIdMap){const dist=editDistance(name,elem.name,maxEditDistance);if(dist<=matchDist&&dist<=maxEditDistance){if(dist===matchDist&&matchName>name){continue}match=id;matchDist=dist;matchName=name}}if(match!==-1){parsedQuery.correction=matchName}elem.id=match}for(const elem2 of elem.generics){convertNameToId(elem2)}}for(const elem of parsedQuery.elems){convertNameToId(elem)}for(const elem of parsedQuery.returned){convertNameToId(elem)}if(parsedQuery.foundElems===1){if(parsedQuery.elems.length===1){elem=parsedQuery.elems[0];for(i=0,nSearchWords=searchWords.length;i0){for(i=0,nSearchWords=searchWords.length;i-1||path.indexOf(key)>-1||(parent!==undefined&&parent.name!==undefined&&parent.name.toLowerCase().indexOf(key)>-1)||editDistance(name,key,maxEditDistance)<=maxEditDistance)){return false}}return true}function nextTab(direction){const next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){const target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#search-tabs button").item(searchState.currentTab);searchState.focusedByTab[searchState.currentTab]=null;if(target){target.focus()}}function buildHrefAndPath(item){let displayPath;let href;const type=itemTypes[item.ty];const name=item.name;let path=item.path;if(type==="mod"){displayPath=path+"::";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="import"){displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/index.html#reexport."+name}else if(type==="primitive"||type==="keyword"){displayPath="";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=ROOT_PATH+name+"/index.html"}else if(item.parent!==undefined){const myparent=item.parent;let anchor="#"+type+"."+name;const parentType=itemTypes[myparent.ty];let pageType=parentType;let pageName=myparent.name;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){const enumNameIdx=item.path.lastIndexOf("::");const enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="#variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}href=ROOT_PATH+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html"+anchor}else{displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href]}function pathSplitter(path){const tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){let extraClass="";if(display===true){extraClass=" active"}const output=document.createElement("div");let length=0;if(array.length>0){output.className="search-results "+extraClass;array.forEach(item=>{const name=item.name;const type=itemTypes[item.ty];const longType=longItemTypes[item.ty];const typeName=longType.length!==0?`${longType}`:"?";length+=1;const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("div");resultName.className="result-name";resultName.insertAdjacentHTML("beforeend",`${typeName}`);link.appendChild(resultName);let alias=" ";if(item.is_alias){alias=`
    \ +${item.alias} - see \ +
    `}resultName.insertAdjacentHTML("beforeend",`
    ${alias}\ +${item.displayPath}${name}\ +
    `);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);link.appendChild(description);output.appendChild(link)})}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
    "+"Try on DuckDuckGo?

    "+"Or try looking in one of these:"}return[output,length]}function makeTabHeader(tabNb,text,nbElems){if(searchState.currentTab===tabNb){return""}return""}function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true")){window.onunload=()=>{};searchState.removeQueryParameters();const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=parseQuery(searchState.input.value)}currentResults=results.query.userQuery;const ret_others=addTab(results.others,results.query,true);const ret_in_args=addTab(results.in_args,results.query,false);const ret_returned=addTab(results.returned,results.query,false);let currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";const crates_list=Object.keys(rawSearchIndex);if(crates_list.length>1){crates=" in 
    "}let output=`

    Results${crates}

    `;if(results.query.error!==null){const error=results.query.error;error.forEach((value,index)=>{value=value.split("<").join("<").split(">").join(">");if(index%2!==0){error[index]=`${value.replaceAll(" ", " ")}`}else{error[index]=value}});output+=`

    Query parser error: "${error.join("")}".

    `;output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+"
    ";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
    "}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
    "+makeTabHeader(0,signatureTabTitle,ret_others[1])+"
    ";currentTab=0}if(results.query.correction!==null){const orig=results.query.returned.length>0?results.query.returned[0].name:results.query.elems[0].name;output+="

    "+`Type "${orig}" not found. `+"Showing results for closest type name "+`"${results.query.correction}" instead.

    `}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function updateSearchHistory(url){if(!browserSupportsHistoryApi()){return}const params=searchState.getQueryStringParams();if(!history.state&&!params.search){history.pushState(null,"",url)}else{history.replaceState(null,"",url)}}function search(e,forced){if(e){e.preventDefault()}const query=parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.original+" - Rust";updateSearchHistory(buildUrl(query.original,filterCrates));showResults(execQuery(query,searchWords,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function buildItemSearchTypeAll(types,lowercasePaths){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;return types.map(type=>{let pathIndex,generics;if(typeof type==="number"){pathIndex=type;generics=[]}else{pathIndex=type[PATH_INDEX_DATA];generics=buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths)}return{id:pathIndex===0?-1:buildTypeMapIndex(lowercasePaths[pathIndex-1].name),ty:pathIndex===0?null:lowercasePaths[pathIndex-1].ty,generics:generics,}})}function buildFunctionSearchType(functionSearchType,lowercasePaths){const INPUTS_DATA=0;const OUTPUT_DATA=1;if(functionSearchType===0){return null}let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){const pathIndex=functionSearchType[INPUTS_DATA];inputs=[{id:pathIndex===0?-1:buildTypeMapIndex(lowercasePaths[pathIndex-1].name),ty:pathIndex===0?null:lowercasePaths[pathIndex-1].ty,generics:[],}]}else{inputs=buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){const pathIndex=functionSearchType[OUTPUT_DATA];output=[{id:pathIndex===0?-1:buildTypeMapIndex(lowercasePaths[pathIndex-1].name),ty:pathIndex===0?null:lowercasePaths[pathIndex-1].ty,generics:[],}]}else{output=buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths)}}else{output=[]}return{inputs,output,}}function buildIndex(rawSearchIndex){searchIndex=[];const searchWords=[];typeNameIdMap=new Map();const charA="A".charCodeAt(0);let currentIndex=0;let id=0;typeNameIdOfArray=buildTypeMapIndex("array");typeNameIdOfSlice=buildTypeMapIndex("slice");typeNameIdOfArrayOrSlice=buildTypeMapIndex("[]");for(const crate in rawSearchIndex){if(!hasOwnPropertyRustdoc(rawSearchIndex,crate)){continue}let crateSize=0;const crateCorpus=rawSearchIndex[crate];searchWords.push(crate);const crateRow={crate:crate,ty:1,name:crate,path:"",desc:crateCorpus.doc,parent:undefined,type:null,id:id,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),deprecated:null,};id+=1;searchIndex.push(crateRow);currentIndex+=1;const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=new Map(crateCorpus.q);const itemDescs=crateCorpus.d;const itemParentIdxs=crateCorpus.i;const itemFunctionSearchTypes=crateCorpus.f;const deprecatedItems=new Set(crateCorpus.c);const paths=crateCorpus.p;const aliases=crateCorpus.a;const lowercasePaths=[];let len=paths.length;for(let i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type:buildFunctionSearchType(itemFunctionSearchTypes[i],lowercasePaths),id:id,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),deprecated:deprecatedItems.has(i),};id+=1;searchIndex.push(row);lastPath=row.path;crateSize+=1}if(aliases){const currentCrateAliases=new Map();ALIASES.set(crate,currentCrateAliases);for(const alias_name in aliases){if(!hasOwnPropertyRustdoc(aliases,alias_name)){continue}let currentNameAliases;if(currentCrateAliases.has(alias_name)){currentNameAliases=currentCrateAliases.get(alias_name)}else{currentNameAliases=[];currentCrateAliases.set(alias_name,currentNameAliases)}for(const local_alias of aliases[alias_name]){currentNameAliases.push(local_alias+currentIndex)}}}currentIndex+=crateSize}return searchWords}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;search(e)}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const query=searchState.input.value.trim();updateSearchHistory(buildUrl(query,null))}currentResults=null;search(undefined,true)}const searchWords=buildIndex(rawSearchIndex);if(typeof window!=="undefined"){registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}if(typeof exports!=="undefined"){exports.initSearch=initSearch;exports.execQuery=execQuery;exports.parseQuery=parseQuery}return searchWords}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch({})}})() \ No newline at end of file diff --git a/doc/static.files/search-8a59a8356673ec1f.js b/doc/static.files/search-8a59a8356673ec1f.js deleted file mode 100644 index c8963b3b..00000000 --- a/doc/static.files/search-8a59a8356673ec1f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(function(){const itemTypes=["mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","primitive","associatedtype","constant","associatedconstant","union","foreigntype","keyword","existential","attr","derive","traitalias",];const TY_PRIMITIVE=itemTypes.indexOf("primitive");const TY_KEYWORD=itemTypes.indexOf("keyword");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";function hasOwnPropertyRustdoc(obj,property){return Object.prototype.hasOwnProperty.call(obj,property)}function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("search-tabs").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb}else if(nb!==0){printTab(0)}}const levenshtein_row2=[];function levenshtein(s1,s2){if(s1===s2){return 0}const s1_len=s1.length,s2_len=s2.length;if(s1_len&&s2_len){let i1=0,i2=0,a,b,c,c2;const row=levenshtein_row2;while(i1-".indexOf(c)!==-1}function isStopCharacter(c){return isWhitespace(c)||isEndCharacter(c)}function isErrorCharacter(c){return"()".indexOf(c)!==-1}function itemTypeFromName(typename){const index=itemTypes.findIndex(i=>i===typename);if(index<0){throw["Unknown type filter ",typename]}return index}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw["Unexpected ","\""," in generics"]}else if(query.literalSearch){throw["Cannot have more than one literal search element"]}else if(parserState.totalElems-parserState.genericsElems>0){throw["Cannot use literal search when there is more than one element"]}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw["Unclosed ","\""]}else if(parserState.userQuery[end]!=="\""){throw["Unexpected ",parserState.userQuery[end]," in a string element"]}else if(start===end){throw["Cannot have empty string element"]}parserState.pos+=1;query.literalSearch=true}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function isIdentCharacter(c){return(c==="_"||(c>="0"&&c<="9")||(c>="a"&&c<="z")||(c>="A"&&c<="Z"))}function isSeparatorCharacter(c){return c===","||isWhitespaceCharacter(c)}function isWhitespaceCharacter(c){return c===" "||c==="\t"}function createQueryElement(query,parserState,name,generics,isInGenerics){if(name==="*"||(name.length===0&&generics.length===0)){return}if(query.literalSearch&&parserState.totalElems-parserState.genericsElems>0){throw["You cannot have more than one element if you use quotes"]}const pathSegments=name.split("::");if(pathSegments.length>1){for(let i=0,len=pathSegments.length;i=end){throw["Found generics without a path"]}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}if(start>=end&&generics.length===0){return}elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics))}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;while(parserState.pos"){extra="<"}else if(endChar===""){extra="->"}else{extra=endChar}throw["Unexpected ",c," after ",extra]}if(!foundStopChar){if(endChar!==""){throw["Expected ",",",", "," "," or ",endChar,", found ",c,]}throw["Expected ",","," or "," ",", found ",c,]}const posBefore=parserState.pos;getNextElem(query,parserState,elems,endChar===">");if(endChar!==""){if(parserState.pos>=parserState.length){throw["Unclosed ","<"]}const c2=parserState.userQuery[parserState.pos];if(!isSeparatorCharacter(c2)&&c2!==endChar){throw["Expected ",endChar,", found ",c2]}}if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}if(parserState.pos>=parserState.length&&endChar!==""){throw["Unclosed ","<"]}parserState.pos+=1}function checkExtraTypeFilterCharacters(parserState){const query=parserState.userQuery;for(let pos=0;pos"){if(isReturnArrow(parserState)){break}throw["Unexpected ",c," (did you mean ","->","?)"]}throw["Unexpected ",c]}else if(c===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw["Unexpected ",":"]}if(query.elems.length===0){throw["Expected type filter before ",":"]}else if(query.elems.length!==1||parserState.totalElems!==1){throw["Unexpected ",":"]}else if(query.literalSearch){throw["You cannot use quotes on type filter"]}checkExtraTypeFilterCharacters(parserState);parserState.typeFilter=query.elems.pop().name;parserState.pos+=1;parserState.totalElems=0;query.literalSearch=false;foundStopChar=true;continue}if(!foundStopChar){if(parserState.typeFilter!==null){throw["Expected ",",",", "," "," or ","->",", found ",c,]}throw["Expected ",",",", "," ",", ",":"," or ","->",", found ",c,]}const before=query.elems.length;getNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}while(parserState.pos"]}break}else{parserState.pos+=1}}}function newParsedQuery(userQuery){return{original:userQuery,userQuery:userQuery.toLowerCase(),typeFilter:NO_TYPE_FILTER,elems:[],returned:[],foundElems:0,literalSearch:false,error:null,}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&hasOwnPropertyRustdoc(rawSearchIndex,elem.value)){return elem.value}return null}function parseQuery(userQuery){userQuery=userQuery.trim();const parserState={length:userQuery.length,pos:0,totalElems:0,genericsElems:0,typeFilter:null,userQuery:userQuery.toLowerCase(),};let query=newParsedQuery(userQuery);try{parseInput(query,parserState);if(parserState.typeFilter!==null){let typeFilter=parserState.typeFilter;if(typeFilter==="const"){typeFilter="constant"}query.typeFilter=itemTypeFromName(typeFilter)}}catch(err){query=newParsedQuery(userQuery);query.error=err;query.typeFilter=-1;return query}if(!query.literalSearch){query.literalSearch=parserState.totalElems>1}query.foundElems=query.elems.length+query.returned.length;return query}function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}function execQuery(parsedQuery,searchWords,filterCrates,currentCrate){const results_others={},results_in_args={},results_returned={};function transformResults(results){const duplicates={};const out=[];for(const result of results){if(result.id>-1){const obj=searchIndex[result.id];obj.lev=result.lev;const res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;if(duplicates[obj.fullPath]){continue}duplicates[obj.fullPath]=true;obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType,preferredCrate){const userQuery=parsedQuery.userQuery;const ar=[];for(const entry in results){if(hasOwnPropertyRustdoc(results,entry)){const result=results[entry];result.word=searchWords[result.id];result.item=searchIndex[result.id]||{};ar.push(result)}}results=ar;if(results.length===0){return[]}results.sort((aaa,bbb)=>{let a,b;a=(aaa.word!==userQuery);b=(bbb.word!==userQuery);if(a!==b){return a-b}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.path_lev;b=bbb.path_lev;if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}a=(aaa.lev);b=(bbb.lev);if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}if((aaa.item.ty===TY_PRIMITIVE&&bbb.item.ty!==TY_KEYWORD)||(aaa.item.ty===TY_KEYWORD&&bbb.item.ty!==TY_PRIMITIVE)){return-1}if((bbb.item.ty===TY_PRIMITIVE&&aaa.item.ty!==TY_PRIMITIVE)||(bbb.item.ty===TY_KEYWORD&&aaa.item.ty!==TY_KEYWORD)){return 1}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});let nameSplit=null;if(parsedQuery.elems.length===1){const hasPath=typeof parsedQuery.elems[0].path==="undefined";nameSplit=hasPath?null:parsedQuery.elems[0].path}for(const result of results){if(result.dontValidate){continue}const name=result.item.name.toLowerCase(),path=result.item.path.toLowerCase(),parent=result.item.parent;if(!isType&&!validateResult(name,path,nameSplit,parent)){result.id=-1}}return transformResults(results)}function checkGenerics(row,elem,defaultLev,maxLevDistance){if(row.generics.length===0){return elem.generics.length===0?defaultLev:maxLevDistance+1}else if(row.generics.length>0&&row.generics[0].name===null){return checkGenerics(row.generics[0],elem,defaultLev,maxLevDistance)}let elem_name;if(elem.generics.length>0&&row.generics.length>=elem.generics.length){const elems=Object.create(null);for(const entry of row.generics){elem_name=entry.name;if(elem_name===""){if(checkGenerics(entry,elem,maxLevDistance+1,maxLevDistance)!==0){return maxLevDistance+1}continue}if(elems[elem_name]===undefined){elems[elem_name]=0}elems[elem_name]+=1}for(const generic of elem.generics){let match=null;if(elems[generic.name]){match=generic.name}else{for(elem_name in elems){if(!hasOwnPropertyRustdoc(elems,elem_name)){continue}if(elem_name===generic){match=elem_name;break}}}if(match===null){return maxLevDistance+1}elems[match]-=1;if(elems[match]===0){delete elems[match]}}return 0}return maxLevDistance+1}function checkIfInGenerics(row,elem,maxLevDistance){let lev=maxLevDistance+1;for(const entry of row.generics){lev=Math.min(checkType(entry,elem,true,maxLevDistance),lev);if(lev===0){break}}return lev}function checkType(row,elem,literalSearch,maxLevDistance){if(row.name===null){if(row.generics.length>0){return checkIfInGenerics(row,elem,maxLevDistance)}return maxLevDistance+1}let lev=levenshtein(row.name,elem.name);if(literalSearch){if(lev!==0){if(elem.generics.length===0){const checkGeneric=row.generics.length>0;if(checkGeneric&&row.generics.findIndex(tmp_elem=>tmp_elem.name===elem.name)!==-1){return 0}}return maxLevDistance+1}else if(elem.generics.length>0){return checkGenerics(row,elem,maxLevDistance+1,maxLevDistance)}return 0}else if(row.generics.length>0){if(elem.generics.length===0){if(lev===0){return 0}lev=Math.min(lev,checkIfInGenerics(row,elem,maxLevDistance));return lev}else if(lev>maxLevDistance){return checkIfInGenerics(row,elem,maxLevDistance)}else{const tmp_lev=checkGenerics(row,elem,lev,maxLevDistance);if(tmp_lev>maxLevDistance){return maxLevDistance+1}return(tmp_lev+lev)/2}}else if(elem.generics.length>0){return maxLevDistance+1}return lev}function findArg(row,elem,typeFilter,maxLevDistance){let lev=maxLevDistance+1;if(row&&row.type&&row.type.inputs&&row.type.inputs.length>0){for(const input of row.type.inputs){if(!typePassesFilter(typeFilter,input.ty)){continue}lev=Math.min(lev,checkType(input,elem,parsedQuery.literalSearch,maxLevDistance));if(lev===0){return 0}}}return parsedQuery.literalSearch?maxLevDistance+1:lev}function checkReturned(row,elem,typeFilter,maxLevDistance){let lev=maxLevDistance+1;if(row&&row.type&&row.type.output.length>0){const ret=row.type.output;for(const ret_ty of ret){if(!typePassesFilter(typeFilter,ret_ty.ty)){continue}lev=Math.min(lev,checkType(ret_ty,elem,parsedQuery.literalSearch,maxLevDistance));if(lev===0){return 0}}}return parsedQuery.literalSearch?maxLevDistance+1:lev}function checkPath(contains,ty,maxLevDistance){if(contains.length===0){return 0}let ret_lev=maxLevDistance+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;if(clength>length){return maxLevDistance+1}for(let i=0;ilength){break}let lev_total=0;let aborted=false;for(let x=0;xmaxLevDistance){aborted=true;break}lev_total+=lev}if(!aborted){ret_lev=Math.min(ret_lev,Math.round(lev_total/clength))}}return ret_lev}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,}}function handleAliases(ret,query,filterCrates,currentCrate){const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(ALIASES[filterCrates]&&ALIASES[filterCrates][lowerQuery]){const query_aliases=ALIASES[filterCrates][lowerQuery];for(const alias of query_aliases){aliases.push(createAliasFromItem(searchIndex[alias]))}}}else{Object.keys(ALIASES).forEach(crate=>{if(ALIASES[crate][lowerQuery]){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=ALIASES[crate][lowerQuery];for(const alias of query_aliases){pushTo.push(createAliasFromItem(searchIndex[alias]))}}})}const sortFunc=(aaa,bbb)=>{if(aaa.path{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach(pushFunc);crateAliases.forEach(pushFunc)}function addIntoResults(results,fullId,id,index,lev,path_lev,maxLevDistance){const inBounds=lev<=maxLevDistance||index!==-1;if(lev===0||(!parsedQuery.literalSearch&&inBounds)){if(results[fullId]!==undefined){const result=results[fullId];if(result.dontValidate||result.lev<=lev){return}}results[fullId]={id:id,index:index,dontValidate:parsedQuery.literalSearch,lev:lev,path_lev:path_lev,}}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned,maxLevDistance){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let lev,index=-1,path_lev=0;const fullId=row.id;const searchWord=searchWords[pos];const in_args=findArg(row,elem,parsedQuery.typeFilter,maxLevDistance);const returned=checkReturned(row,elem,parsedQuery.typeFilter,maxLevDistance);addIntoResults(results_in_args,fullId,pos,-1,in_args,0,maxLevDistance);addIntoResults(results_returned,fullId,pos,-1,returned,0,maxLevDistance);if(!typePassesFilter(parsedQuery.typeFilter,row.ty)){return}const row_index=row.normalizedName.indexOf(elem.pathLast);const word_index=searchWord.indexOf(elem.pathLast);if(row_index===-1){index=word_index}else if(word_index===-1){index=row_index}else if(word_index1){path_lev=checkPath(elem.pathWithoutLast,row,maxLevDistance);if(path_lev>maxLevDistance){return}}if(parsedQuery.literalSearch){if(searchWord===elem.name){addIntoResults(results_others,fullId,pos,index,0,path_lev)}return}lev=levenshtein(searchWord,elem.pathLast);if(index===-1&&lev+path_lev>maxLevDistance){return}addIntoResults(results_others,fullId,pos,index,lev,path_lev,maxLevDistance)}function handleArgs(row,pos,results,maxLevDistance){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let totalLev=0;let nbLev=0;function checkArgs(elems,callback){for(const elem of elems){const lev=callback(row,elem,NO_TYPE_FILTER,maxLevDistance);if(lev<=1){nbLev+=1;totalLev+=lev}else{return false}}return true}if(!checkArgs(parsedQuery.elems,findArg)){return}if(!checkArgs(parsedQuery.returned,checkReturned)){return}if(nbLev===0){return}const lev=Math.round(totalLev/nbLev);addIntoResults(results,row.id,pos,0,lev,0,maxLevDistance)}function innerRunQuery(){let elem,i,nSearchWords,in_returned,row;let queryLen=0;for(const elem of parsedQuery.elems){queryLen+=elem.name.length}for(const elem of parsedQuery.returned){queryLen+=elem.name.length}const maxLevDistance=Math.floor(queryLen/3);if(parsedQuery.foundElems===1){if(parsedQuery.elems.length===1){elem=parsedQuery.elems[0];for(i=0,nSearchWords=searchWords.length;i0){for(i=0,nSearchWords=searchWords.length;i-1||path.indexOf(key)>-1||(parent!==undefined&&parent.name!==undefined&&parent.name.toLowerCase().indexOf(key)>-1)||levenshtein(name,key)<=maxLevDistance)){return false}}return true}function nextTab(direction){const next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){const target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#search-tabs button").item(searchState.currentTab);searchState.focusedByTab[searchState.currentTab]=null;if(target){target.focus()}}function buildHrefAndPath(item){let displayPath;let href;const type=itemTypes[item.ty];const name=item.name;let path=item.path;if(type==="mod"){displayPath=path+"::";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="import"){displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/index.html#reexport."+name}else if(type==="primitive"||type==="keyword"){displayPath="";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=ROOT_PATH+name+"/index.html"}else if(item.parent!==undefined){const myparent=item.parent;let anchor="#"+type+"."+name;const parentType=itemTypes[myparent.ty];let pageType=parentType;let pageName=myparent.name;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){const enumNameIdx=item.path.lastIndexOf("::");const enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="#variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}href=ROOT_PATH+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html"+anchor}else{displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href]}function pathSplitter(path){const tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){let extraClass="";if(display===true){extraClass=" active"}const output=document.createElement("div");let length=0;if(array.length>0){output.className="search-results "+extraClass;array.forEach(item=>{const name=item.name;const type=itemTypes[item.ty];length+=1;let extra="";if(type==="primitive"){extra=" (primitive type)"}else if(type==="keyword"){extra=" (keyword)"}const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("div");resultName.className="result-name";if(item.is_alias){const alias=document.createElement("span");alias.className="alias";const bold=document.createElement("b");bold.innerText=item.alias;alias.appendChild(bold);alias.insertAdjacentHTML("beforeend"," - see ");resultName.appendChild(alias)}resultName.insertAdjacentHTML("beforeend",item.displayPath+""+name+extra+"");link.appendChild(resultName);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);link.appendChild(description);output.appendChild(link)})}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
    "+"Try on DuckDuckGo?

    "+"Or try looking in one of these:"}return[output,length]}function makeTabHeader(tabNb,text,nbElems){if(searchState.currentTab===tabNb){return""}return""}function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true"&&(!search.firstChild||search.firstChild.innerText!==searchState.loadingText))){const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=parseQuery(searchState.input.value)}currentResults=results.query.userQuery;const ret_others=addTab(results.others,results.query,true);const ret_in_args=addTab(results.in_args,results.query,false);const ret_returned=addTab(results.returned,results.query,false);let currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";const crates_list=Object.keys(rawSearchIndex);if(crates_list.length>1){crates=" in 
    "}let output=`

    Results${crates}

    `;if(results.query.error!==null){const error=results.query.error;error.forEach((value,index)=>{value=value.split("<").join("<").split(">").join(">");if(index%2!==0){error[index]=`${value}`}else{error[index]=value}});output+=`

    Query parser error: "${error.join("")}".

    `;output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+"
    ";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
    "}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
    "+makeTabHeader(0,signatureTabTitle,ret_others[1])+"
    ";currentTab=0}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function search(e,forced){if(e){e.preventDefault()}const query=parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.original+" - Rust";if(browserSupportsHistoryApi()){const newURL=buildUrl(query.original,filterCrates);if(!history.state&&!params.search){history.pushState(null,"",newURL)}else{history.replaceState(null,"",newURL)}}showResults(execQuery(query,searchWords,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function buildItemSearchTypeAll(types,lowercasePaths){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;return types.map(type=>{let pathIndex,generics;if(typeof type==="number"){pathIndex=type;generics=[]}else{pathIndex=type[PATH_INDEX_DATA];generics=buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths)}return{name:pathIndex===0?null:lowercasePaths[pathIndex-1].name,ty:pathIndex===0?null:lowercasePaths[pathIndex-1].ty,generics:generics,}})}function buildFunctionSearchType(functionSearchType,lowercasePaths){const INPUTS_DATA=0;const OUTPUT_DATA=1;if(functionSearchType===0){return null}let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){const pathIndex=functionSearchType[INPUTS_DATA];inputs=[{name:pathIndex===0?null:lowercasePaths[pathIndex-1].name,ty:pathIndex===0?null:lowercasePaths[pathIndex-1].ty,generics:[],}]}else{inputs=buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){const pathIndex=functionSearchType[OUTPUT_DATA];output=[{name:pathIndex===0?null:lowercasePaths[pathIndex-1].name,ty:pathIndex===0?null:lowercasePaths[pathIndex-1].ty,generics:[],}]}else{output=buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths)}}else{output=[]}return{inputs,output,}}function buildIndex(rawSearchIndex){searchIndex=[];const searchWords=[];const charA="A".charCodeAt(0);let currentIndex=0;let id=0;for(const crate in rawSearchIndex){if(!hasOwnPropertyRustdoc(rawSearchIndex,crate)){continue}let crateSize=0;const crateCorpus=rawSearchIndex[crate];searchWords.push(crate);const crateRow={crate:crate,ty:1,name:crate,path:"",desc:crateCorpus.doc,parent:undefined,type:null,id:id,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),};id+=1;searchIndex.push(crateRow);currentIndex+=1;const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=crateCorpus.q;const itemDescs=crateCorpus.d;const itemParentIdxs=crateCorpus.i;const itemFunctionSearchTypes=crateCorpus.f;const paths=crateCorpus.p;const aliases=crateCorpus.a;const lowercasePaths=[];let len=paths.length;for(let i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type:buildFunctionSearchType(itemFunctionSearchTypes[i],lowercasePaths),id:id,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),};id+=1;searchIndex.push(row);lastPath=row.path;crateSize+=1}if(aliases){ALIASES[crate]=Object.create(null);for(const alias_name in aliases){if(!hasOwnPropertyRustdoc(aliases,alias_name)){continue}if(!hasOwnPropertyRustdoc(ALIASES[crate],alias_name)){ALIASES[crate][alias_name]=[]}for(const local_alias of aliases[alias_name]){ALIASES[crate][alias_name].push(local_alias+currentIndex)}}}currentIndex+=crateSize}return searchWords}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){if(browserSupportsHistoryApi()){history.replaceState(null,window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;search(e)}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const params=searchState.getQueryStringParams();const query=searchState.input.value.trim();if(!history.state&&!params.search){history.pushState(null,"",buildUrl(query,null))}else{history.replaceState(null,"",buildUrl(query,null))}}currentResults=null;search(undefined,true)}const searchWords=buildIndex(rawSearchIndex);if(typeof window!=="undefined"){registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}if(typeof exports!=="undefined"){exports.initSearch=initSearch;exports.execQuery=execQuery;exports.parseQuery=parseQuery}return searchWords}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch({})}})() \ No newline at end of file diff --git a/doc/static.files/settings-0bcba95ff279c1db.css b/doc/static.files/settings-0bcba95ff279c1db.css deleted file mode 100644 index 907d4206..00000000 --- a/doc/static.files/settings-0bcba95ff279c1db.css +++ /dev/null @@ -1,3 +0,0 @@ -.setting-line{margin:1.2em 0.6em;position:relative;}.setting-radio input,.setting-check input{margin-right:0.3em;height:1.2rem;width:1.2rem;color:inherit;border:1px solid currentColor;outline:none;-webkit-appearance:none;cursor:pointer;}.setting-radio input{border-radius:50%;}.setting-check input:checked{content:url('data:image/svg+xml,\ - \ - ');}.setting-radio span,.setting-check span{padding-bottom:1px;}.setting-radio{margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;display:inline-flex;align-items:center;cursor:pointer;}.setting-radio+.setting-radio{margin-left:0.5em;}.setting-check{margin-right:20px;display:flex;align-items:center;cursor:pointer;}.setting-radio input:checked{box-shadow:inset 0 0 0 3px var(--main-background-color);background-color:var(--settings-input-color);}.setting-check input:checked{background-color:var(--settings-input-color);}.setting-radio input:focus,.setting-check input:focus{box-shadow:0 0 1px 1px var(--settings-input-color);}.setting-radio input:checked:focus{box-shadow:inset 0 0 0 3px var(--main-background-color),0 0 2px 2px var(--settings-input-color);}.setting-radio input:hover,.setting-check input:hover{border-color:var(--settings-input-color) !important;} \ No newline at end of file diff --git a/doc/static.files/settings-8c76f75bfb6bd192.css b/doc/static.files/settings-8c76f75bfb6bd192.css new file mode 100644 index 00000000..5241bb86 --- /dev/null +++ b/doc/static.files/settings-8c76f75bfb6bd192.css @@ -0,0 +1,3 @@ +.setting-line{margin:1.2em 0.6em;}.setting-radio input,.setting-check input{margin-right:0.3em;height:1.2rem;width:1.2rem;border:2px solid var(--settings-input-border-color);outline:none;-webkit-appearance:none;cursor:pointer;}.setting-radio input{border-radius:50%;}.setting-radio span,.setting-check span{padding-bottom:1px;}.setting-radio{margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;display:inline-flex;align-items:center;cursor:pointer;}.setting-radio+.setting-radio{margin-left:0.5em;}.setting-check{margin-right:20px;display:flex;align-items:center;cursor:pointer;}.setting-radio input:checked{box-shadow:inset 0 0 0 3px var(--main-background-color);background-color:var(--settings-input-color);}.setting-check input:checked{background-color:var(--settings-input-color);border-width:1px;content:url('data:image/svg+xml,\ + \ + ');}.setting-radio input:focus,.setting-check input:focus{box-shadow:0 0 1px 1px var(--settings-input-color);}.setting-radio input:checked:focus{box-shadow:inset 0 0 0 3px var(--main-background-color),0 0 2px 2px var(--settings-input-color);}.setting-radio input:hover,.setting-check input:hover{border-color:var(--settings-input-color) !important;} \ No newline at end of file diff --git a/doc/static.files/settings-f0c5c39777a9a2f6.js b/doc/static.files/settings-de11bff964e9d4e5.js similarity index 67% rename from doc/static.files/settings-f0c5c39777a9a2f6.js rename to doc/static.files/settings-de11bff964e9d4e5.js index 9f78bb91..cc508a86 100644 --- a/doc/static.files/settings-f0c5c39777a9a2f6.js +++ b/doc/static.files/settings-de11bff964e9d4e5.js @@ -1,4 +1,4 @@ -"use strict";(function(){const isSettingsPage=window.location.pathname.endsWith("/settings.html");function changeSetting(settingName,value){if(settingName==="theme"){const useSystem=value==="system preference"?"true":"false";updateLocalStorage("use-system-theme",useSystem)}updateLocalStorage(settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":updateTheme();updateLightAndDark();break;case"line-numbers":if(value===true){window.rustdoc_add_line_numbers_to_examples()}else{window.rustdoc_remove_line_numbers_from_examples()}break}}function handleKey(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey){return}switch(getVirtualKey(ev)){case"Enter":case"Return":case"Space":ev.target.checked=!ev.target.checked;ev.preventDefault();break}}function showLightAndDark(){removeClass(document.getElementById("preferred-light-theme"),"hidden");removeClass(document.getElementById("preferred-dark-theme"),"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme"),"hidden");addClass(document.getElementById("preferred-dark-theme"),"hidden")}function updateLightAndDark(){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||(useSystem===null&&getSettingValue("theme")===null)){showLightAndDark()}else{hideLightAndDark()}}function setEvents(settingsElement){updateLightAndDark();onEachLazy(settingsElement.querySelectorAll("input[type=\"checkbox\"]"),toggle=>{const settingId=toggle.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=function(){changeSetting(this.id,this.checked)};toggle.onkeyup=handleKey;toggle.onkeyrelease=handleKey});onEachLazy(settingsElement.querySelectorAll("input[type=\"radio\"]"),elem=>{const settingId=elem.name;let settingValue=getSettingValue(settingId);if(settingId==="theme"){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||settingValue===null){if(useSystem!=="false"){settingValue="system preference"}else{settingValue="light"}}}if(settingValue!==null&&settingValue!=="null"){elem.checked=settingValue===elem.value}elem.addEventListener("change",ev=>{changeSetting(ev.target.name,ev.target.value)})})}function buildSettingsPageSections(settings){let output="";for(const setting of settings){const js_data_name=setting["js_name"];const setting_name=setting["name"];if(setting["options"]!==undefined){output+=`\ +"use strict";(function(){const isSettingsPage=window.location.pathname.endsWith("/settings.html");function changeSetting(settingName,value){if(settingName==="theme"){const useSystem=value==="system preference"?"true":"false";updateLocalStorage("use-system-theme",useSystem)}updateLocalStorage(settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":updateTheme();updateLightAndDark();break;case"line-numbers":if(value===true){window.rustdoc_add_line_numbers_to_examples()}else{window.rustdoc_remove_line_numbers_from_examples()}break}}function showLightAndDark(){removeClass(document.getElementById("preferred-light-theme"),"hidden");removeClass(document.getElementById("preferred-dark-theme"),"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme"),"hidden");addClass(document.getElementById("preferred-dark-theme"),"hidden")}function updateLightAndDark(){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||(useSystem===null&&getSettingValue("theme")===null)){showLightAndDark()}else{hideLightAndDark()}}function setEvents(settingsElement){updateLightAndDark();onEachLazy(settingsElement.querySelectorAll("input[type=\"checkbox\"]"),toggle=>{const settingId=toggle.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=function(){changeSetting(this.id,this.checked)}});onEachLazy(settingsElement.querySelectorAll("input[type=\"radio\"]"),elem=>{const settingId=elem.name;let settingValue=getSettingValue(settingId);if(settingId==="theme"){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||settingValue===null){settingValue=useSystem==="false"?"light":"system preference"}}if(settingValue!==null&&settingValue!=="null"){elem.checked=settingValue===elem.value}elem.addEventListener("change",ev=>{changeSetting(ev.target.name,ev.target.value)})})}function buildSettingsPageSections(settings){let output="";for(const setting of settings){const js_data_name=setting["js_name"];const setting_name=setting["name"];if(setting["options"]!==undefined){output+=`\
    ${setting_name}
    `;onEach(setting["options"],option=>{const checked=option===setting["default"]?" checked":"";const full=`${js_data_name}-${option.replace(/ /g,"-")}`;output+=`\ diff --git a/doc/static.files/source-script-1b95b7cca98b26e5.js b/doc/static.files/source-script-1b95b7cca98b26e5.js deleted file mode 100644 index 73a9fcd4..00000000 --- a/doc/static.files/source-script-1b95b7cca98b26e5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(function(){const rootPath=document.getElementById("rustdoc-vars").attributes["data-root-path"].value;const NAME_OFFSET=0;const DIRS_OFFSET=1;const FILES_OFFSET=2;function closeSidebarIfMobile(){if(window.innerWidth"){window.rustdocMobileScrollLock();addClass(document.documentElement,"source-sidebar-expanded");child.innerText="<";updateLocalStorage("source-sidebar-show","true")}else{window.rustdocMobileScrollUnlock();removeClass(document.documentElement,"source-sidebar-expanded");child.innerText=">";updateLocalStorage("source-sidebar-show","false")}}function createSidebarToggle(){const sidebarToggle=document.createElement("div");sidebarToggle.id="src-sidebar-toggle";const inner=document.createElement("button");if(getCurrentValue("source-sidebar-show")==="true"){inner.innerText="<"}else{inner.innerText=">"}inner.onclick=toggleSidebar;sidebarToggle.appendChild(inner);return sidebarToggle}function createSourceSidebar(){const container=document.querySelector("nav.sidebar");const sidebarToggle=createSidebarToggle();container.insertBefore(sidebarToggle,container.firstChild);const sidebar=document.createElement("div");sidebar.id="source-sidebar";let hasFoundFile=false;const title=document.createElement("div");title.className="title";title.innerText="Files";sidebar.appendChild(title);Object.keys(sourcesIndex).forEach(key=>{sourcesIndex[key][NAME_OFFSET]=key;hasFoundFile=createDirEntry(sourcesIndex[key],sidebar,"",hasFoundFile)});container.appendChild(sidebar);const selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}const lineNumbersRegex=/^#?(\d+)(?:-(\d+))?$/;function highlightSourceLines(match){if(typeof match==="undefined"){match=window.location.hash.match(lineNumbersRegex)}if(!match){return}let from=parseInt(match[1],10);let to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to{onEachLazy(e.getElementsByTagName("a"),i_e=>{removeClass(i_e,"line-highlighted")})});for(let i=from;i<=to;++i){elem=document.getElementById(i);if(!elem){break}addClass(elem,"line-highlighted")}}const handleSourceHighlight=(function(){let prev_line_id=0;const set_fragment=name=>{const x=window.scrollX,y=window.scrollY;if(browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSourceLines()}else{location.replace("#"+name)}window.scrollTo(x,y)};return ev=>{let cur_line_id=parseInt(ev.target.id,10);if(isNaN(cur_line_id)||ev.ctrlKey||ev.altKey||ev.metaKey){return}ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_line_id){const tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",()=>{const match=window.location.hash.match(lineNumbersRegex);if(match){return highlightSourceLines(match)}});onEachLazy(document.getElementsByClassName("src-line-numbers"),el=>{el.addEventListener("click",handleSourceHighlight)});highlightSourceLines();window.createSourceSidebar=createSourceSidebar})() \ No newline at end of file diff --git a/doc/static.files/src-script-3280b574d94e47b4.js b/doc/static.files/src-script-3280b574d94e47b4.js new file mode 100644 index 00000000..9ea88921 --- /dev/null +++ b/doc/static.files/src-script-3280b574d94e47b4.js @@ -0,0 +1 @@ +"use strict";(function(){const rootPath=getVar("root-path");const NAME_OFFSET=0;const DIRS_OFFSET=1;const FILES_OFFSET=2;const RUSTDOC_MOBILE_BREAKPOINT=700;function closeSidebarIfMobile(){if(window.innerWidth"){addClass(document.documentElement,"src-sidebar-expanded");child.innerText="<";updateLocalStorage("source-sidebar-show","true")}else{removeClass(document.documentElement,"src-sidebar-expanded");child.innerText=">";updateLocalStorage("source-sidebar-show","false")}}function createSidebarToggle(){const sidebarToggle=document.createElement("div");sidebarToggle.id="src-sidebar-toggle";const inner=document.createElement("button");if(getCurrentValue("source-sidebar-show")==="true"){inner.innerText="<"}else{inner.innerText=">"}inner.onclick=toggleSidebar;sidebarToggle.appendChild(inner);return sidebarToggle}function createSrcSidebar(){const container=document.querySelector("nav.sidebar");const sidebarToggle=createSidebarToggle();container.insertBefore(sidebarToggle,container.firstChild);const sidebar=document.createElement("div");sidebar.id="src-sidebar";let hasFoundFile=false;const title=document.createElement("div");title.className="title";title.innerText="Files";sidebar.appendChild(title);Object.keys(srcIndex).forEach(key=>{srcIndex[key][NAME_OFFSET]=key;hasFoundFile=createDirEntry(srcIndex[key],sidebar,"",hasFoundFile)});container.appendChild(sidebar);const selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}const lineNumbersRegex=/^#?(\d+)(?:-(\d+))?$/;function highlightSrcLines(match){if(typeof match==="undefined"){match=window.location.hash.match(lineNumbersRegex)}if(!match){return}let from=parseInt(match[1],10);let to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to{onEachLazy(e.getElementsByTagName("a"),i_e=>{removeClass(i_e,"line-highlighted")})});for(let i=from;i<=to;++i){elem=document.getElementById(i);if(!elem){break}addClass(elem,"line-highlighted")}}const handleSrcHighlight=(function(){let prev_line_id=0;const set_fragment=name=>{const x=window.scrollX,y=window.scrollY;if(browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSrcLines()}else{location.replace("#"+name)}window.scrollTo(x,y)};return ev=>{let cur_line_id=parseInt(ev.target.id,10);if(isNaN(cur_line_id)||ev.ctrlKey||ev.altKey||ev.metaKey){return}ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_line_id){const tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",()=>{const match=window.location.hash.match(lineNumbersRegex);if(match){return highlightSrcLines(match)}});onEachLazy(document.getElementsByClassName("src-line-numbers"),el=>{el.addEventListener("click",handleSrcHighlight)});highlightSrcLines();window.createSrcSidebar=createSrcSidebar})() \ No newline at end of file diff --git a/doc/static.files/storage-3891ce972e3a2bf8.js b/doc/static.files/storage-3891ce972e3a2bf8.js deleted file mode 100644 index d64fa5ef..00000000 --- a/doc/static.files/storage-3891ce972e3a2bf8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";const darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");window.mainTheme=document.getElementById("mainThemeStyle");window.RUSTDOC_MOBILE_BREAKPOINT=700;const settingsDataset=(function(){const settingsElement=document.getElementById("default-settings");if(settingsElement===null){return null}const dataset=settingsElement.dataset;if(dataset===undefined){return null}return dataset})();function getSettingValue(settingName){const current=getCurrentValue(settingName);if(current!==null){return current}if(settingsDataset!==null){const def=settingsDataset[settingName.replace(/-/g,"_")];if(def!==undefined){return def}}return null}const localStoredTheme=getSettingValue("theme");const savedHref=[];function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(!elem||!elem.classList){return}elem.classList.add(className)}function removeClass(elem,className){if(!elem||!elem.classList){return}elem.classList.remove(className)}function onEach(arr,func,reversed){if(arr&&arr.length>0&&func){if(reversed){const length=arr.length;for(let i=length-1;i>=0;--i){if(func(arr[i])){return true}}}else{for(const elem of arr){if(func(elem)){return true}}}}return false}function onEachLazy(lazyArray,func,reversed){return onEach(Array.prototype.slice.call(lazyArray),func,reversed)}function updateLocalStorage(name,value){try{window.localStorage.setItem("rustdoc-"+name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem("rustdoc-"+name)}catch(e){return null}}function switchTheme(styleElem,mainStyleElem,newThemeName,saveTheme){if(saveTheme){updateLocalStorage("theme",newThemeName)}if(savedHref.length===0){onEachLazy(document.getElementsByTagName("link"),el=>{savedHref.push(el.href)})}const newHref=savedHref.find(url=>{const m=url.match(/static\.files\/(.*)-[a-f0-9]{16}\.css$/);if(m&&m[1]===newThemeName){return true}const m2=url.match(/\/([^/]*)\.css$/);if(m2&&m2[1].startsWith(newThemeName)){return true}});if(newHref&&newHref!==styleElem.href){styleElem.href=newHref}}const updateTheme=(function(){function updateTheme(){const use=(theme,saveTheme)=>{switchTheme(window.currentTheme,window.mainTheme,theme,saveTheme)};if(getSettingValue("use-system-theme")!=="false"){const lightTheme=getSettingValue("preferred-light-theme")||"light";const darkTheme=getSettingValue("preferred-dark-theme")||"dark";if(isDarkMode()){use(darkTheme,true)}else{use(lightTheme,true)}}else{use(getSettingValue("theme"),false)}}let isDarkMode;if(window.matchMedia){const mql=window.matchMedia("(prefers-color-scheme: dark)");isDarkMode=()=>mql.matches;if(mql.addEventListener){mql.addEventListener("change",updateTheme)}else{mql.addListener(updateTheme)}}else{const cssContent=getComputedStyle(document.documentElement).getPropertyValue("content");const cssColorScheme=cssContent||"\"light\"";isDarkMode=()=>(cssColorScheme==="\"dark\"")}return updateTheme})();if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}}updateTheme();if(getSettingValue("source-sidebar-show")==="true"){addClass(document.documentElement,"source-sidebar-expanded")}window.addEventListener("pageshow",ev=>{if(ev.persisted){setTimeout(updateTheme,0)}}) \ No newline at end of file diff --git a/doc/static.files/storage-db41da1a38ea3cb8.js b/doc/static.files/storage-db41da1a38ea3cb8.js new file mode 100644 index 00000000..b8728135 --- /dev/null +++ b/doc/static.files/storage-db41da1a38ea3cb8.js @@ -0,0 +1 @@ +"use strict";const darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");const settingsDataset=(function(){const settingsElement=document.getElementById("default-settings");return settingsElement&&settingsElement.dataset?settingsElement.dataset:null})();function getSettingValue(settingName){const current=getCurrentValue(settingName);if(current===null&&settingsDataset!==null){const def=settingsDataset[settingName.replace(/-/g,"_")];if(def!==undefined){return def}}return current}const localStoredTheme=getSettingValue("theme");function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(elem&&elem.classList){elem.classList.add(className)}}function removeClass(elem,className){if(elem&&elem.classList){elem.classList.remove(className)}}function onEach(arr,func,reversed){if(arr&&arr.length>0){if(reversed){for(let i=arr.length-1;i>=0;--i){if(func(arr[i])){return true}}}else{for(const elem of arr){if(func(elem)){return true}}}}return false}function onEachLazy(lazyArray,func,reversed){return onEach(Array.prototype.slice.call(lazyArray),func,reversed)}function updateLocalStorage(name,value){try{window.localStorage.setItem("rustdoc-"+name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem("rustdoc-"+name)}catch(e){return null}}const getVar=(function getVar(name){const el=document.querySelector("head > meta[name='rustdoc-vars']");return el?el.attributes["data-"+name].value:null});function switchTheme(newThemeName,saveTheme){if(saveTheme){updateLocalStorage("theme",newThemeName)}let newHref;if(newThemeName==="light"||newThemeName==="dark"||newThemeName==="ayu"){newHref=getVar("static-root-path")+getVar("theme-"+newThemeName+"-css")}else{newHref=getVar("root-path")+newThemeName+getVar("resource-suffix")+".css"}if(!window.currentTheme){document.write(``);window.currentTheme=document.getElementById("themeStyle")}else if(newHref!==window.currentTheme.href){window.currentTheme.href=newHref}}const updateTheme=(function(){const mql=window.matchMedia("(prefers-color-scheme: dark)");function updateTheme(){if(getSettingValue("use-system-theme")!=="false"){const lightTheme=getSettingValue("preferred-light-theme")||"light";const darkTheme=getSettingValue("preferred-dark-theme")||"dark";updateLocalStorage("use-system-theme","true");switchTheme(mql.matches?darkTheme:lightTheme,true)}else{switchTheme(getSettingValue("theme"),false)}}mql.addEventListener("change",updateTheme);return updateTheme})();if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}}updateTheme();if(getSettingValue("source-sidebar-show")==="true"){addClass(document.documentElement,"src-sidebar-expanded")}window.addEventListener("pageshow",ev=>{if(ev.persisted){setTimeout(updateTheme,0)}}) \ No newline at end of file diff --git a/index.html b/index.html index 17d774d4..89e34bd6 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ noentiendo: emulate commodore machines - +